У меня есть хранимая процедура, которая запускается автоматически каждое утро в SQL Server 2008 R2, часть этой хранимой процедуры включает выполнение других хранимых процедур. Формат может быть суммированы следующим образом:Обработка хранимых процедур SQL Server
BEGIN TRY
-- Various SQL Commands
EXECUTE storedprocedure1
EXECUTE storedprocedure2
-- etc
END TRY
BEGIN CATCH
--This logs the error to a table
EXECUTE errortrappingprocedure
END CATCH
storedprocedure1 и storedprocedure2 основном усечение таблицы и выберите в него из другой таблицы. Что-то вдоль линий:
BEGIN TRY
TRUNCATE Table1
INSERT INTO Table1 (A, B, C)
SELECT A, B, C FROM MainTable
END TRY
BEGIN CATCH
EXECUTE errortrappingprocedure
END CATCH
Процедура перехват ошибок содержит следующее:
INSERT INTO
[Internal].dbo.Error_Trapping
(
[Error_Number],
[Error_Severity],
[Error_State],
[Error_Procedure],
[Error_Line],
[Error_Message],
[Error_DateTime]
)
(
SELECT
ERROR_NUMBER(),
ERROR_SEVERITY(),
ERROR_STATE(),
ERROR_PROCEDURE(),
ERROR_LINE(),
ERROR_MESSAGE(),
GETDATE()
)
99% времени это работает, но иногда мы находим, что storedprocedure1 не завершена, с Table1 только будучи частью населенной. Однако в нашей таблице ошибок не регистрируются ошибки. Я протестировал процедуру захвата ошибок, и она работает.
Когда я позже запускаю storedprocedure1 вручную, он заканчивается штрафом. Никакие данные в исходной таблице не будут изменены этим пунктом, поэтому, очевидно, это не проблема с данными, что-то еще произошло в тот момент, который вызвал сбой процедуры. Есть ли лучший способ для меня регистрировать ошибки здесь или где-то еще в базе данных, я могу попытаться выяснить, почему она терпит неудачу?
Вы используете основную хранимую процедуру из задания агента SQL или из приложения/службы? – CrApHeR
Основная хранимая процедура вызывается из внешнего приложения. – fourdam
У вас есть какой-то журнал во внешнем приложении, чтобы проверить, есть ли какое-то исключение или что-то еще? Существует ли вероятность того, что одна из хранимых процедур заблокирована любой другой транзакцией? – CrApHeR