В распределенной транзакции возникает «серьезная ошибка» при попытке вставить значения нарушения уникального ключа. Как отловить «серьезную ошибку»?
SAMPLE QUERY 1
SET XACT_ABORT ON
BEGIN DISTRIBUTED TRAN
BEGIN TRY
INSERT INTO [LINKEDSERVER].[DB].[SCHEMA].[TABLE] VALUES(THE VALUES Violation of UNIQUE KEY)
END TRY
COMMIT TRAN
BEGIN CATCH
ROLLBACK TRAN
PRINT ERROR_MESSAGE()
END CATCH
RESULT 1
*Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.*
ОБРАЗЕЦ ЗАПРОСА 2
INSERT INTO [LINKEDSERVER].[DB].[SCHEMA].[TABLE] VALUES(THE VALUES Violation of UNIQUE KEY)
РЕЗУЛЬТАТ 2
Msg 2627, Level 14, State 1, Line 1
Violation of UNIQUE KEY constraint 'XXX'. Cannot insert duplicate key in object '[SCHEMA].[TABLE]'. The duplicate key value is (XXX).
Испытанная среда
From : Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) on Windows 10 Pro 10.0
To : Microsoft SQL Server 2016 (RTM) - 13.0.1601.5 (X64) on Windows Server 2012 R2 Standard
From : Microsoft SQL Server 2012 - 11.0.2100.60 (X64) on Windows NT 6.2
To : Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) on Windows 10 Pro 10.0