sql server:插入事务中的表以记录错误发生?

odi*_*seh 4 t-sql sql-server logging stored-procedures transactions

我有一个SP(存储过程),其中包含一些T-SQL语句.....

所有T-sql语句都在一个事务块中,并且通过发生任何错误,我回滚所有事情.

像这样:

BEGIN TRANSACTION
.....
.....
IF @X=1
BEGIN
    declare cu cursor for select col1,col2 from Table1 where Id=@Y
    open  cu
    fetch next from cuinto @A, @B
    while  @@Fetch_Status = 0
    BEGIN
         .....
        ......
        IF @@ERROR <>0
        BEGIN
            ROLLBACK TRANSACTION
            RETURN
        END
END
.....
.....
Run Code Online (Sandbox Code Playgroud)

Sp没有正常运行,我无法找到它的重要内容.....我认为通过在表中插入一些数据来记录sp中的每个操作是个好主意我的问题是:

因为它使用了一个事务,所以每次插入都会被回滚.....

你怎么看?还有其他方法吗?

谢谢

Mla*_*dic 5

3件事:
1)请,如果你不需要,请不要使用游标.
2)您可以通过使用日志WITH LOG RAISERROR插入数据表变量,然后将变成一只真正的表,你已经rolledback您的交易之后.这是可能的,因为表变量与事务无关.
3)使用try catch