質問

データベースは、 " 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" テーブルからデータをマージします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top