2

データベースは、「変更データ キャプチャ」メカニズムを介してすべての変更を追跡します。これらの変更を行ったユーザーに関する追加情報を追加する必要があります。次のユーザーは SQL Server ユーザーではありません。セキュリティ承認は、外部メカニズムを介して実行されます。

「 start_lsn」列と「userId 」列を持つヘルパー テーブルを追加して、承認されたユーザーにトランザクションを関連付けたいと考えています。アプリケーション コードで実行されている現在のトランザクションに対応する" start_lsn " 値を特定する方法はありますか?

4

1 に答える 1

1

現在、次の解決策を見つけました。

1)

  • 「ID 」列と「userId」列を持つもう 1 つのテーブル ( 「UserActivity」など) を作成します。

  • 「ID」列を主キーとして使用します。

  • このテーブルの CDC オプションを有効にします。

2)

  • すべてのデータ変更操作をトランザクション スコープでラップします。

  • 特定のトランザクション中に、現在の「userId」で新しいデータ レコードをこのテーブルに追加します。

    • 独占取引開始;

    • 「データ操作」を実行します。

    • 「userId」に関する情報を「UserActivity」テーブルに挿入します

トランザクションは排他的であり、すべての操作は単一のトランザクション スコープ内で行われたため、「last_lsn」 ( 「start_lsn」 ) の値は同じです。

その後、JOIN 演算子を使用して、「UserActivity」テーブルのデータをデータ操作情報とマージします。

于 2012-10-12T15:11:39.317 に答える