0

私は、私たちの製品を別のサードパーティ製品に接続する任務を負っています。私がしなければならないことの 1 つは、新しい「プロジェクト」を追加するときに、サードパーティの製品機能の一部を模倣することです。これは、複数のデータベース テーブルに触れる可能性があります。データに加えられたすべての変更を記録する何らかのグローバル フックをデータベースに追加する方法はありますか?

フックを追加し、サードパーティ アプリケーションを使用してプロジェクトを作成し、影響を受けたすべてのテーブルを確認したいと思います。

私はそれが単なる新しい行以上のものであることを知っています.新しいプロジェクトのために増加しているように見えるいくつかのカウントフィールドに出くわしました.新しいプロジェクトの挿入で変更された他のレコードがあるのではないかと心配しています.新しい行が追加されています。

助けてくれてありがとう〜Prescott

4

2 に答える 2

0

ログが再利用されないようにします。

  • データベースは完全復旧モードです (真の完全、初期バックアップあり)
  • ログ バックアップのメンテナンス タスクは、テスト期間中中断されます。

それで:

  • 現在のデータベース LSN を書き留めます
  • サードパーティ プロジェクトの作成を実行します
  • 新しく追加されたログ情報を確認しますselect * from ::fn_log(oldcurrentLSN, NULL);

すべての書き込み操作がログに表示されます。物理操作 (アロケーション ユニット ID) から、論理操作 (オブジェクト ID) に到達できます。

そうは言っても、データベース レベルでサード パーティのスキーマとデータ モデルを直接操作する場合は、サード パーティのスキーマとデータ モデルについて十分に理解している必要があります。サード パーティ ツールの更新を計画していて、どのテーブルを更新すればよいかさえわからない場合、そのデータが破損する可能性が高くなります。

于 2009-12-11T18:22:17.020 に答える
0

変更を追跡するには、次の方法が考えられます

  1. サーバー上で実行されるすべてのクエリをキャプチャするSQL Server プロファイラーを実行します。これらは、データベース、スキーマ、または一連のテーブルなどでフィルタリングできます。
  2. サードパーティのトランザクション ログ リーダーを使用します。これは非常に邪魔にならないプロセスです。データベースで完全復旧に設定されていることを確認する必要があります。
于 2009-12-11T18:23:13.883 に答える