3

特定の行が何回変更されたかを知りたいので、これを行いたいです。

これは可能ですか?

ありがとう

4

4 に答える 4

3

回答が遅くなりましたが、新しい読者の役に立てば幸いです…</p>

試すことができるもう 1 つの関数は DBCC LOG ですが、残念ながらこれは fn_dblog と同じドキュメント化されていない関数です。

SQL Server のトランザクション ログの問題は、この目的で使用することを意図したものではなく、ポイント イン タイム リカバリとトランザクション プロパティを許可するためだけに使用されることです。

試すことができるApexSQLの商用ログ リーダーがあります。

正しい方向に進む可能性のある同様の投稿もいくつかあります。

SQL Server 2008 でログ ファイル (*.LDF) を読み取る

SQL Server トランザクション ログ エクスプローラー/アナライザー

于 2013-10-03T12:02:34.097 に答える
3

ログ ファイルを読み取るには、市販のツールを使用するか、膨大な量の SQL 内部の知識が必要です。Select * from ::fn_DBlog(null,null) を使用して、生の出力の一部を確認できます。

実際にデコードして同じレコードが変更されていることを確認し、変更がコミットされたことを確認することは、簡単に言えば難しい作業です。したがって、「可能」ではありますが、それができる可能性はあまり「ありそう」ではありません。

データベース内でその機能が必要な場合は、コード内のトリガー/ロジックを確認する必要があります。

于 2010-01-27T09:39:05.837 に答える
0

このプログラムを使用してそれを行うことができます http://www.red-gate.com/products/SQL_Log_Rescue/index.htm

于 2010-01-27T09:35:25.627 に答える
0

SQL Server 2008 の使用を検討してください。

変更データ キャプチャと呼ばれる SQL Server 2008 の新機能があります。この機能は、まさに必要なことを実行します。つまり、時間の経過に伴うデータの変更を追跡します。

変更を追跡するためにログ ファイルを調べることは賢明な方法ではありません。そうすることで、限定された履歴が提供されます。その範囲は、データベースに使用する復旧モデルにも依存します。

ログ テーブルを使用し、SQL Server トリガーを使用してデータを入力することにより、少量の開発で "独自の" ソリューションを展開できます。もちろん、このようなソリューションの適合性は、ビジネス ケースによって異なります。

興味深い読み物については、次の TechNet 記事をご覧ください。

エンタープライズ データベースの変更の追跡

于 2010-01-27T13:37:59.207 に答える