TransactionScope и транзакции

В своем коде на C # я использую TransactionScope, потому что мне сказали не полагаться на то, что мои программисты sql всегда будут использовать транзакции, и мы несем ответственность, и яда яда.

Было сказано, что

Похоже, объект TransactionScope Откатывается до SqlTransaction? Возможно ли это, и если да, то какова правильная методология для упаковки TransactionScope в транзакцию.

Вот тест sql

CREATE PROC ThrowError
AS

BEGIN TRANSACTION --SqlTransaction
SELECT 1/0

IF @@ERROR<> 0
BEGIN
  ROLLBACK TRANSACTION --SqlTransaction
  RETURN -1 
END
ELSE
BEGIN
  COMMIT TRANSACTION --SqlTransaction
  RETURN 0
END

go

DECLARE @RESULT INT

EXEC @RESULT = ThrowError

SELECT @RESULT

И если я запускаю это, я получаю только деление на 0 и возвращаю -1

Звони с кода C # я получаю дополнительное сообщение об ошибке

Ошибка деления на ноль.
Число транзакций после EXECUTE указывает на то, что отсутствует надпись COMMIT или ROLLBACK TRANSACTION. Предыдущий счет = 1, текущий счет = 0.

Если я дам имя транзакции sql, то

Невозможно откатить SqlTransaction. Транзакция или точка сохранения с таким именем не найдены. Число транзакций после EXECUTE указывает на отсутствие оператора COMMIT или ROLLBACK TRANSACTION. Предыдущий счет = 1, текущий счет = 2.

иногда кажется, что количество увеличивается, пока приложение полностью не выйдет

C # просто

        using (TransactionScope scope = new TransactionScope())
        {
             ... Execute Sql 

             scope.Commit()
         }

РЕДАКТИРОВАТЬ:

SQL-код должен работать на 2000 и 2005

Ответы на вопрос(6)

Ваш ответ на вопрос