(SQL Server 2008 R2 Standard、データベースは完全復旧中)
フィールドid、firstname、lastnameを持つテーブルがあります。ステートメントが実行されます。
insert into dbo.sometable (id, firstname, lastname) values (1, 'John', 'Smith')
数時間後、別のステートメントが実行されます:
update dbo.sometable set firstname='Matt' where id=1
レコードの履歴を確認できる方法またはツールはありますか(レコードがY日付でX日に挿入され、これらが挿入された値であり、同じレコードがB日付でA日付で更新され、これらは更新後の新しい値でした)?
DB2 for i(つまり、iSeries上のDB2)に精通しているユーザーは、CRTDBFJRNと呼ばれるTAAツールセットコマンドを知っているかもしれません。更新しました。
SQL Server EnterpriseにはCDCがありますが、Standardエディションがあります。トリガーを使用して、監査テーブルに格納することにより、変更されたデータを追跡できます。トリガーを使用するには、さらに2つのオブジェクト(トリガーと監査テーブル)が必要です。トリガーは変更ごとに起動されます。ツールがトランザクションファイルからオンデマンドでトランザクションを再生できれば、すばらしいでしょう。
監査人が財務記録(たとえば、1日に挿入および更新された)の履歴を要求したときに、どのツールを使用するか、どのタスクを実行しますか。入力した、オリジナル入力時のデータなどは何でしたか?
どんな助けでもありがたいです。ありがとうございました。
いつ、誰が、どのコンピュータとアプリケーションを使用するかなど、トランザクションに関する情報を提供できる2つのツールをテストしました
ApexSQL Audit は、監査トリガーを作成するため、テーブルごとにトリガーをコーディングおよび作成するのが難しい場合、これはオプションです
2つの組み込みレポートがあり、キャプチャされたすべてのトランザクションを2つのテーブルに保存するので、それらに対してクエリを実行し、必要な情報を抽出できます。
残念ながら、それはトランザクションを再生できません
もう1つは ApexSQL Log です。トランザクションログとtrnバックアップを読み取るため、データベースは完全復旧モデルである必要があります。データトランザクションの他に、スキーマの変更(テーブルの作成、関数の変更など)も追跡し、トランザクションを再生できます。
私はちょうど遭遇した StandardCDC これは興味深いかもしれません:
StandardCDCは、指定されたテーブルのデータ操作言語(DML)の変更をキャプチャし、結果をリレーショナル形式で保存します。キャプチャテーブルは、追跡されたオブジェクトの列リストをミラーリングし、特定の列のみを保存するためのオプションを備えています。
トリガーと監査/履歴テーブル。挿入/更新用のメインテーブルの列
監査/履歴テーブルから、いつでもデータベースの状態を取得できます。
編集:
テーブルへの複数の書き込みパスがあることは非常に一般的であり、トリガーによって変更が確実にキャプチャされます。これは、テーブル値パラメーターを使用して、他のコードによって呼び出される1つのストアドプロシージャのみが実際に書き込むことを許可する場合に変更されます。
また、実際のエンドユーザーがプロキシから離れている場合(Webサーバー経由など)に、クライアントコードで資格情報を渡す(またはパススルーを有効にする)必要があることも考慮する必要があります。
変更の追跡は、Standard Editionで使用できます。データへの変更を追跡することはできますが、誰が変更したかを知ることはできません。
オプションは基本的に次のとおりです。
Aaronとgbnによって書かれたものを除く他のオプション:
SQL2008には、使用可能なCHANGETABLE
という新機能があります。詳細については、この link を確認してください。 CHANGETABLEは、テーブルの変更追跡情報を返します。このステートメントを使用して、テーブルのすべての変更、または特定の行の変更追跡情報を返すことができます。
私はオープンソーサラーであり、Change Data Capture
が必要とするSQL Enterprise EditionのMSライセンス料金を支払う余裕はありません。
私はgithub上で yact を開発しました。これは、単純なSQLトリガーを使用して5W(誰が、いつ、どこで、なぜ、何を)を格納するかです。データの前後の画像をXMLとして保存します。