I think SQL Server has an issue with error trapping linked server queries. The following stored procedure never hits the error handler when calling the SELECT statement. When I purposely put a bad date format in a date field I get the following:
Server: Msg 8114, Level 16, State 10, Procedure sp_MLS, Line 6
Error converting data type DBTYPE_DBDATE to datetime.
This is the stored procedure in it's most basic form that I am using:
CREATE PROCEDURE sp_MLS AS
BEGIN TRAN
DROP TABLE s8_mast_test;
SELECT * INTO s8_mast_test FROM OPENQUERY(MLS_S8, 'SELECT * FROM s8_mast');
IF (@@ERROR <> 0) GOTO ERR_HANDLER
COMMIT TRAN
RETURN 0
ERR_HANDLER:
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
RETURN 1
GO