2

SQL Server 2005 で行がテーブルに挿入された日付と時刻を見つけることはできますか?

SQL Server は挿入コマンドをログに記録しますか?

4

3 に答える 3

3

テーブルを作成するときは常に、次の 2 つの列を含めます。

CreatedBy varchar(255) default system_name,
CreatedAt datetime default getdate()

これは少し余分なスペースを使用しますが、時間が経つにつれて、この情報が非常に役立つことがわかりました。

ログについての質問です。答えは「はい」です。ただし、情報を取得できるかどうかは、リカバリ モードによって異なります。単純な場合、レコードは次のトランザクションのために上書きされます。バルクまたはフルの場合、少なくとも最後の増分バックアップ以降の情報がログに記録されます。

于 2012-05-31T13:30:46.923 に答える
2

cdcで作成された関数を使用して実際のデータレコードをプルしている限り、挿入日を導出できます。

たとえば、次のようなものをプルする場合:

DECLARE @from_lsn binary(10), @to_lsn binary(10);                         

SET @from_lsn=sys.fn_cdc_get_min_lsn ( 'name_of_your_cdc_instance_on_cdc_table' );
SET @to_lsn=sys.fn_cdc_get_max_lsn();

SELECT * FROM 
cdc.fn_cdc_get_net_changes_name_of_your_cdc_instance_on_cdc_table
(
    @from_lsn, 
    @to_lsn, 
    N'all'
);

cdc組み込み関数sys.fn_cdc_map_lsn_to_timeを使用して、ログシーケンス番号を日時に変換できます。以下のユースケース:

SELECT sys.fn_cdc_map_lsn_to_time(__$start_lsn),* FROM 
cdc.fn_cdc_get_net_changes_name_of_your_cdc_instance_on_cdc_table
(
    @from_lsn, 
    @to_lsn, 
    N'all'
);
于 2012-11-05T18:00:11.750 に答える
1

テーブルに InsertDate のデフォルトの getdate() 列を設定できます。これが最も簡単な方法です。

SQl Server 2008 では、CDCを使用してテーブルの変更されたデータを制御できます

SQL Server テーブルに適用される変更データ キャプチャ レコードの挿入、更新、および削除アクティビティ。これにより、変更の詳細を簡単に使用できるリレーショナル形式で利用できるようになります。変更をターゲット環境に適用するために必要な列情報とメタデータは、変更された行についてキャプチャされ、追跡対象のソース テーブルの列構造を反映する変更テーブルに格納されます。コンシューマーが変更データに体系的にアクセスできるように、テーブル値関数が提供されます。

于 2012-05-31T13:32:39.147 に答える