2011-07-22 18 views
0

.NETとSQLServerの両方のコンポーネントを持つシステムがあります。 .NETコンポーネントは、プロセスを開始し、呼び出しをストアード・プロシージャーにトランザクション内で囲みます。.NET + SQL Server 2005 - トランザクションをロールバックする方法ログを保持する方法

このプロセスは、データベース上のほとんどのストアドプロシージャを使用して実行され、すべてが独自のログテーブルに書き込まれます。

問題は、.NETコードで開始されたトランザクションが、データベースコードで使用されている他のトランザクションをすべて囲み、子トランザクションの1つがロールバックしてログテーブルがなくなった場合です。

ログを保持する方法はありますか?他のすべてをロールバックする方法はありますか?

ありがとうございます。

答えて

0

トランザクションセーブポイントはお手伝いできますか?

これはまさにデータベース・レベルのソリューションです:

Savepoints offer a mechanism to roll back portions of transactions. You create a savepoint using the SAVE TRANSACTION savepoint_name statement. Later, you execute a ROLLBACK TRANSACTION savepoint_name statement to roll back to the savepoint instead of rolling back to the start of the transaction.

(私用として)良い参照、これはあなたが探しているものexatclyであると思います:

Creates a savepoint in the transaction that can be used to roll back a part of the transaction, and specifies the savepoint name.

+0

私はあなたの解決策をテストした後、これについて忘れていない、私は返信します。 – JoaoPSantos

2

使用エラーを格納するテーブル変数:これはトランザクションの影響を受けません

または暗黙的にロールバックしてログに記録するSET XACT_ABORT ONを使用してくださいより後の0エラー

+0

私はこれについて忘れていない、私はあなたのソリューションをテストした後に返信します。 – JoaoPSantos

関連する問題