アプリケーションコードの "start_lsn"値を取得する方法
-
13-12-2019 - |
質問
データベースは、 " change data capture "メカニズムを介してすべての変更を追跡します。これらの変更を加えるユーザーに関する追加情報を追加する必要があります。 次のユーザーはSQL Serverユーザーではありません。セキュリティ認証は外部機構を介して行われます。
列 " start_lsn "と " userid "を持つヘルパーテーブルを追加して、取引を許可されたユーザーに関連付けます。 アプリケーションコードで実行された現在のトランザクションに対応する " start_lsn "値を決定する方法はありますか?
解決
現時点では、次の解決策を見つけました:
1)
-
もう1つのテーブルを作成します(たとえば、 ")、" id "と" userid "列;
-
主キーとして「ID」列を使用してください。
-
このテーブルのCDCオプションを有効にします。
2)
-
トランザクションスコープですべてのデータ変更操作をラップします。
-
特定のトランザクション中に現在の "userid" を使用してこのテーブルに新しいデータレコードを追加します。
-
開始 exclusive トランザクション;
-
-
「データ操作」を実行します。
-
"userid" に関する情報を "userActivity" テーブルに挿入します。
トランザクションは排他的であり、単一のトランザクションスコープ内ですべての操作が行われているため、 "last_lsn" ( "start_lsn" )値は同じです。 その後、結合演算子を使用して、データ操作情報を "UserActivity" テーブルからデータをマージします。
所属していません StackOverflow