Я хочу подчеркнуть использование
SET XACT_ABORT ON;
для транзакции MSSQL с несколькими операторами sql.
См.: https://msdn.microsoft.com/ en / us / library / ms188792.aspx Они дают очень хороший пример.
Итак, окончательный код должен выглядеть следующим образом:
SET XACT_ABORT ON;
BEGIN TRANSACTION
DECLARE @DataID int;
INSERT INTO DataTable (Column1 ...) VALUES (....);
SELECT @DataID = scope_identity();
INSERT INTO LinkTable VALUES (@ObjectID, @DataID);
COMMIT