Начните здесь: http://www.sommarskog.se/error_handling_2005.html
Имейте в виду, что некоторые ошибки являются сессионными и даже пакетными терминаторами, и вы не можете перехватить эти
Ссылка, которую я вам дал (и две ссылки на этой странице) должна дать вам достаточно информации о том, как с этим справиться
Кстати, если только это не защелкаемая ошибка, она продолжит выполнение
запустите это
declare @rowcount int, @sql nvarchar(100)
set @rowcount = 1
while @rowcount < 10
begin
set @sql = 'select * from <Remotemachine>.db1.dbo.table1'
exec sp_executesql @sql
print @rowcount
set @rowcount = @rowcount +1
End
Вот вывод
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
1
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
2
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
3
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
4
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
5
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
6
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
7
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
8
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
9
Вот как вы можете использовать TRY CATCH
, чтобы перехватить это
declare @rowcount int, @sql nvarchar(100)
set @rowcount = 1
while @rowcount < 10
begin
set @sql = 'select * from <Remotemachine>.db1.dbo.table1'
begin try
exec sp_executesql @sql
end try
begin catch
select ERROR_MESSAGE() -- or do something
end catch
print @rowcount
set @rowcount = @rowcount +1
End