Вот хороший ресурс о том, как бороться с ошибками в SQL Server.http://www.sqlservercentral.com/articles/Development/anerrorhandlingtemplatefor2005/2295/
Однако некоторые методы требуют, чтобы у вас была возможность изменить код, чтобы зафиксировать ошибки.Там действительно нет способа обойти это.Вы не можете просто проигнорировать ошибку, продолжить обработку, а затем вернуться позже, чтобы устранить ошибку.В большинстве, если не во всех языках, исключения должны рассматриваться во время возникновения исключения.T-SQL ничем не отличается.
Я лично использую хранимую процедуру для записи любой ошибки, когда она возникает.Вот что я использую:
CREATE PROCEDURE [dbo].[Error_Handler]
@returnMessage bit = 'False'
WITH EXEC AS CALLER
AS
BEGIN
INSERT INTO Errors (Number,Severity,State,[Procedure],Line,[Message])
VALUES (
ERROR_NUMBER(),
ERROR_SEVERITY(),
ERROR_STATE(),
isnull(ERROR_PROCEDURE(),'Ad-Hoc Query'),
isnull(ERROR_LINE(),0),
ERROR_MESSAGE())
IF(@returnMessage = 'True')
BEGIN
select Number,Severity,State,[Procedure],Line,[Message]
from Errors
where ErrorID = scope_identity()
END
END