FC2ブログ
 

Technology へようこそ
ここは技術者の「経験」と「ノウハウ」のブログです


--年--月--日

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


2009年12月18日

変更データ キャプチャ

SQL Server 2008では、UPDATEやINSERT、DELETEステートメントによる更新履歴を保管できる
変更データ キャプチャ機能があります。指定した時間の過去のデータを参照したり、
オペレーションミス時のデータ回復などで利用できます。
機能を使用する場合、SQL Server Agentサービスを開始しておく必要があります。

例)
-- データベース作成
create database sample_db;

-- サンプルテーブル、データ作成
create table sample_tbl ( col1 int, col2 varchar(20) );
insert into sample_tbl values (1, 'test'), (2, 'テスト'), (3, 'てすと');

-- サンプルデータベースに対して変更データ キャプチャを有効に設定
use sample_db
go
exec sys.sp_cdc_enable_db;

-- サンプルテーブルに対して変更データ キャプチャを有効に設定
exec sys.sp_cdc_enable_table @source_schema = N'dbo',
@source_name = N'sample_tbl', @role_name = N'cdc_Admin';
サンプルテーブルのデータを編集
-- col1 = 1 の行を更新 ( 'test' → '更新した行' )
update sample_tbl set col2 = '更新した行' where col1 = 1;

-- 新しい行を追加
insert into sample_tbl values (4, '追加した行');

-- col1 = 2 の行を削除 ( 'テスト' )
delete from sample_tbl where col1 = 2;
サンプルテーブルのデータ内容
col1  col2
----- --------------------
1 更新した行
3 てすと
4 追加した行
cdc スキーマにあるdbo_sample_tbl_CT(スキーマ名_テーブル名_CT)を確認
select * from cdc.dbo_sample_tbl_CT;

_$start_lsn _$end_lsn _$seqval _$operation _$update_mask col1 col2
---------------------- --------- ---------------------- ----------- ------------- ---- -----------
0x000000230000007D0004 NULL 0x000000230000007D0002 3 0x02 1 test
0x000000230000007D0004 NULL 0x000000230000007D0002 4 0x02 1 更新した行
0x000000230000007E0003 NULL 0x000000230000007E0002 2 0x03 4 追加した行
0x000000230000007F0003 NULL 0x000000230000007F0002 1 0x03 2 テスト

operation列の内容から更新前データ(3)、更新後データ(4)、追加(2)、削除(1)と確認できます。
テスト時などに利用できそうな機能です。

[ posted by kami ]

この記事に対するコメント


この記事に対するコメントの投稿














管理者にだけ表示を許可する



この記事に対するトラックバック
トラックバックURL
http://comfair2.blog24.fc2.com/tb.php/449-9792ef12
この記事にトラックバックする(FC2ブログユーザー)











上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。