Я пытаюсь достичь следующего: я вызываю хранимые процедуры из двух разных баз данных. У SP есть простая вставка в таблицу. Нет проблем, если обе транзакции прошли успешно, но когда я попытался сгенерировать исключение во 2-м SP DB, первый не откатился. Что я здесь делаю не так?
Код C #:
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Suppress))
{
// Update DB1
using (SqlConnection con = new SqlConnection(connectionString1))
{
con.Open();
SqlCommand command1 = new SqlCommand("sp_1", con);
command1.ExecuteNonQuery();
// Update DB2
using (SqlConnection con2 = new SqlConnection(connectionString2))
{
con2.Open();
SqlCommand command2 = new SqlCommand("sp_2", con2);
command2.ExecuteNonQuery();
}
}
scope.Complete();
}
DB1 SP :
BEGIN
INSERT INTO TABLE_X1 VALUES(...)
END
DB2 SP :
BEGIN
THROW 51000, 'The record does not exist.', 1;
INSERT INTO TABLE_X2 VALUES(...)
END