SQL サーバー 2000:レコードが最後に変更されたのがいつかを知る方法はありますか?
-
08-06-2019 - |
質問
テーブルには最終更新フィールドがないため、既存のデータがいつ更新されたかを知る必要があります。したがって、最終更新フィールドを追加しても役に立ちません(私の知る限り)。
解決
SQL Server 2000 は、この情報を追跡しません。
データベース モデルによっては、この日付が何であるかを推測する独創的またはあいまいな方法がある場合があります。ただし、他のデータと関係のない 1 つのテーブルについて話している場合は、運が悪いです。
他のヒント
何らかの監査メカニズムがなければ、変更をチェックすることはできません。収集されていない情報を抽出しようとしています。レコードがいつ追加または編集されたかを知る必要があるだけの場合は、レコードの更新時にトリガーによって更新される日時フィールドを追加するのが最も簡単な選択です。
レコードがいつ削除されたかを追跡する必要がある場合は、監査テーブルを使用し、レコードが追加、編集、または削除されたときにトリガーから行を監査テーブルに設定します。
ログ ビューアを試してみるとよいでしょう。これは基本的にトランザクション ログ内のトランザクションを確認できるだけなので、問題の行を更新したステートメントを見つけることができるはずです。これを運用レベルの監査戦略としてはお勧めしませんが、いざというときには役立つことがわかりました。
これが私が使用したものです。無料で、SQL Server 2000 (のみ) で動作します。
そのテーブルにタイムスタンプ フィールドを追加し、更新トリガーを使用してそのタイムスタンプ値を更新できます。
オムニ監査 は、データベース全体に監査を実装する商用パッケージです。
自由な方法は、起動時に監査テーブルにエントリを追加する各テーブルのトリガーを作成することです。