Soumettre la recherche
Mettre en ligne
データを追っかけよう!
•
Télécharger en tant que PPTX, PDF
•
0 j'aime
•
310 vues
O
Oda Shinsuke
Suivre
SQL World 第4回 http://club-windows7.net/modules/pico/index.php?content_id=4
Lire moins
Lire la suite
Signaler
Partager
Signaler
Partager
1 sur 28
Télécharger maintenant
Recommandé
こんなEqualsは嫌だ
こんなEqualsは嫌だ
Oda Shinsuke
Selenium webdriver使ってみようず
Selenium webdriver使ってみようず
Oda Shinsuke
The security monitoring and attack detection planning guide
The security monitoring and attack detection planning guide
atul chaurasia
Hentai advent calendar 2012 番外編
Hentai advent calendar 2012 番外編
Oda Shinsuke
本当にあった怖い話し (やきに駆動 2.0)
本当にあった怖い話し (やきに駆動 2.0)
Oda Shinsuke
BeanValidation
BeanValidation
Oda Shinsuke
Sql world とは
Sql world とは
Oda Shinsuke
Ms build 色々出来るよ
Ms build 色々出来るよ
Oda Shinsuke
Recommandé
こんなEqualsは嫌だ
こんなEqualsは嫌だ
Oda Shinsuke
Selenium webdriver使ってみようず
Selenium webdriver使ってみようず
Oda Shinsuke
The security monitoring and attack detection planning guide
The security monitoring and attack detection planning guide
atul chaurasia
Hentai advent calendar 2012 番外編
Hentai advent calendar 2012 番外編
Oda Shinsuke
本当にあった怖い話し (やきに駆動 2.0)
本当にあった怖い話し (やきに駆動 2.0)
Oda Shinsuke
BeanValidation
BeanValidation
Oda Shinsuke
Sql world とは
Sql world とは
Oda Shinsuke
Ms build 色々出来るよ
Ms build 色々出来るよ
Oda Shinsuke
Management studio の便利機能の紹介
Management studio の便利機能の紹介
Oda Shinsuke
Selenium 触ってみよう
Selenium 触ってみよう
Oda Shinsuke
SciVerse ScienceDirect training 201103
SciVerse ScienceDirect training 201103
tsuneyoshi
Zespol nadkobiety parys andrzej
Zespol nadkobiety parys andrzej
Andrzej Parys
Aanbod kantoorobjecten Apeldoorn (test)
Aanbod kantoorobjecten Apeldoorn (test)
Richard_vanbeek
ตัวอย่างบทที่2โปรแกรม filter บน linux
ตัวอย่างบทที่2โปรแกรม filter บน linux
rubtumproject.com
Alohos meniu 2011
Alohos meniu 2011
Vaidas Balamutas
Ekonomi bandung-seminar
Ekonomi bandung-seminar
Gustaff Harriman Iskandar
Hanny Kusumawati - Pecha Kucha JKT x PR Vaganza
Hanny Kusumawati - Pecha Kucha JKT x PR Vaganza
pechakuchajakarta
Révision et fin unité 6
Révision et fin unité 6
Waldemar Oliveira de Júnior
Unité 4 début
Unité 4 début
Waldemar Oliveira de Júnior
Canindé
Canindé
Leslie Lima
Bilan argentine
Bilan argentine
Pierre Michaux
Le passé composé
Le passé composé
Waldemar Oliveira de Júnior
Salient poles
Salient poles
Angelo Hafner
SQL Server2022_PSPoptimization_pub.pdf
SQL Server2022_PSPoptimization_pub.pdf
Oda Shinsuke
What's hyperscale
What's hyperscale
Oda Shinsuke
Dot net+sql server tips
Dot net+sql server tips
Oda Shinsuke
Sql server 2019 ざっくり紹介
Sql server 2019 ざっくり紹介
Oda Shinsuke
Spark on sql server?
Spark on sql server?
Oda Shinsuke
SQL Server のロック概要
SQL Server のロック概要
Oda Shinsuke
Blazor 触ってみた
Blazor 触ってみた
Oda Shinsuke
Contenu connexe
En vedette
Management studio の便利機能の紹介
Management studio の便利機能の紹介
Oda Shinsuke
Selenium 触ってみよう
Selenium 触ってみよう
Oda Shinsuke
SciVerse ScienceDirect training 201103
SciVerse ScienceDirect training 201103
tsuneyoshi
Zespol nadkobiety parys andrzej
Zespol nadkobiety parys andrzej
Andrzej Parys
Aanbod kantoorobjecten Apeldoorn (test)
Aanbod kantoorobjecten Apeldoorn (test)
Richard_vanbeek
ตัวอย่างบทที่2โปรแกรม filter บน linux
ตัวอย่างบทที่2โปรแกรม filter บน linux
rubtumproject.com
Alohos meniu 2011
Alohos meniu 2011
Vaidas Balamutas
Ekonomi bandung-seminar
Ekonomi bandung-seminar
Gustaff Harriman Iskandar
Hanny Kusumawati - Pecha Kucha JKT x PR Vaganza
Hanny Kusumawati - Pecha Kucha JKT x PR Vaganza
pechakuchajakarta
Révision et fin unité 6
Révision et fin unité 6
Waldemar Oliveira de Júnior
Unité 4 début
Unité 4 début
Waldemar Oliveira de Júnior
Canindé
Canindé
Leslie Lima
Bilan argentine
Bilan argentine
Pierre Michaux
Le passé composé
Le passé composé
Waldemar Oliveira de Júnior
Salient poles
Salient poles
Angelo Hafner
En vedette
(15)
Management studio の便利機能の紹介
Management studio の便利機能の紹介
Selenium 触ってみよう
Selenium 触ってみよう
SciVerse ScienceDirect training 201103
SciVerse ScienceDirect training 201103
Zespol nadkobiety parys andrzej
Zespol nadkobiety parys andrzej
Aanbod kantoorobjecten Apeldoorn (test)
Aanbod kantoorobjecten Apeldoorn (test)
ตัวอย่างบทที่2โปรแกรม filter บน linux
ตัวอย่างบทที่2โปรแกรม filter บน linux
Alohos meniu 2011
Alohos meniu 2011
Ekonomi bandung-seminar
Ekonomi bandung-seminar
Hanny Kusumawati - Pecha Kucha JKT x PR Vaganza
Hanny Kusumawati - Pecha Kucha JKT x PR Vaganza
Révision et fin unité 6
Révision et fin unité 6
Unité 4 début
Unité 4 début
Canindé
Canindé
Bilan argentine
Bilan argentine
Le passé composé
Le passé composé
Salient poles
Salient poles
Plus de Oda Shinsuke
SQL Server2022_PSPoptimization_pub.pdf
SQL Server2022_PSPoptimization_pub.pdf
Oda Shinsuke
What's hyperscale
What's hyperscale
Oda Shinsuke
Dot net+sql server tips
Dot net+sql server tips
Oda Shinsuke
Sql server 2019 ざっくり紹介
Sql server 2019 ざっくり紹介
Oda Shinsuke
Spark on sql server?
Spark on sql server?
Oda Shinsuke
SQL Server のロック概要
SQL Server のロック概要
Oda Shinsuke
Blazor 触ってみた
Blazor 触ってみた
Oda Shinsuke
Linux + PHP でも SQL Server
Linux + PHP でも SQL Server
Oda Shinsuke
グラフデータベースの話し
グラフデータベースの話し
Oda Shinsuke
Sql server 2017 新機能のご紹介
Sql server 2017 新機能のご紹介
Oda Shinsuke
Sql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベース
Oda Shinsuke
Transaction scopeまだダメ
Transaction scopeまだダメ
Oda Shinsuke
Sql serverと他dbの違いを押さえよう!
Sql serverと他dbの違いを押さえよう!
Oda Shinsuke
2016年を振り返って
2016年を振り返って
Oda Shinsuke
Sql world とは
Sql world とは
Oda Shinsuke
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
Oda Shinsuke
Ms build 触ってみよう
Ms build 触ってみよう
Oda Shinsuke
Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介
Oda Shinsuke
Sql server sql database 最新機能紹介
Sql server sql database 最新機能紹介
Oda Shinsuke
Sql database のご紹介
Sql database のご紹介
Oda Shinsuke
Plus de Oda Shinsuke
(20)
SQL Server2022_PSPoptimization_pub.pdf
SQL Server2022_PSPoptimization_pub.pdf
What's hyperscale
What's hyperscale
Dot net+sql server tips
Dot net+sql server tips
Sql server 2019 ざっくり紹介
Sql server 2019 ざっくり紹介
Spark on sql server?
Spark on sql server?
SQL Server のロック概要
SQL Server のロック概要
Blazor 触ってみた
Blazor 触ってみた
Linux + PHP でも SQL Server
Linux + PHP でも SQL Server
グラフデータベースの話し
グラフデータベースの話し
Sql server 2017 新機能のご紹介
Sql server 2017 新機能のご紹介
Sql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベース
Transaction scopeまだダメ
Transaction scopeまだダメ
Sql serverと他dbの違いを押さえよう!
Sql serverと他dbの違いを押さえよう!
2016年を振り返って
2016年を振り返って
Sql world とは
Sql world とは
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
Ms build 触ってみよう
Ms build 触ってみよう
Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介
Sql server sql database 最新機能紹介
Sql server sql database 最新機能紹介
Sql database のご紹介
Sql database のご紹介
データを追っかけよう!
1.
データを追っかけよう! ~変更データキャプチャ と
変更の追跡 を使ってみた~ 2011/01/29 お だ
2.
今日のゴール 変更を確認する方法(2種類)の違いが雰囲気わかる。 検証/デバッグ時にデータの変遷を確認する事が多分出来る。
頑張れば SQL Server – 他DB の同期が出来る?
3.
データの変更って? DML(Data Manipulation
Language)の変更を追跡する 追加操作 (INSERT) 変更操作 (UPDATE) 削除操作 (DELETE) ※検索(SELECT) は含まない! そもそも DML ってデータの参照は含まない? SQL Server 2008R2 では http://msdn.microsoft.com/ja-jp/library/ff848766.aspx SQL Server Comapctでは http://msdn.microsoft.com/ja-jp/library/ms174439(v=SQL.100).aspx
4.
変更を確認するには データ変更キャプチャ (Change
Data Capture) 変更の追跡 (Change Tracking) SQL Server 2008 から追加された それ以前は・・・トリガー等で実装?
5.
6.
7.
変更履歴を保持しないと… 差分比較しか出来ない。 起点となるデータ(前回のスナップショット等)から現在のデータに対しての比較しか出来ない。
一トランザクション内での同一データへの複数回更新はハンドリング出来ない。 トランザクション終了時点で、開始前と比べてどうなったか?しか保持していない。例:UPDATE後に DELETE した場合は、DELETE 扱い データサイズが少なくて済む。
8.
CDC を使ってみる 0.
SQL Server Agentを起動する SQL Server Agent が起動していないと、変更データが書き込まれない。 http://msdn.microsoft.com/ja-jp/library/bb522475.aspx 1.データベース で CDC を有効にする システムテーブルやスキーマー、ユーザーに色々と追加される。 テンプレート:Change Data Capture - Configuration - Enable Database for CDC を参考に EXEC sys.sp_cdc_enable_db GO
9.
CDC を使ってみる 2.Capture
するテーブルを指定 キャプチャインスタンス名を省略時には、 「スキーマ名_テーブル名」で付けられる。 システムテーブルに、履歴用のテーブルが追加される。 テンプレート:Change Data Capture - Configuration - Enable a Table Naming the Capture Instance を参考に EXEC sys.sp_cdc_enable_table @source_schema = N‘スキーマ名', @source_name = N‘テーブル名', @role_name = NULL, -- GatingRole?を使う場合指定する? @capture_instance = N‘何か一意な名前‘ -- 省略可能
10.
デモ Agent が起動している状態で
INSERT 発行。CDC テーブルにも反映される。 Agent を止めた状態で INSERT を発行。CDC テーブルに反映されない。 Agent を起動すると、さっき INSERT したデータが反映される。 トランザクション内で同一のデータを複数回更新する。
11.
テーブル定義を変更すると… 新しく追加された列(キャプチャ対象として指定されていない列)は無視される キャプチャ対象列が削除されたら?
->履歴データは、以降 NULL が設定される cdc.ddl_historyテーブルに定義が変わった事が書き込まれる ->sys.sp_cdc_get_ddl_historyストアドを使うと、内容を確認出来る。 ->自動では通知してくれなさそう。定期的に監視する必要がある。(今回は開発補助として使うので無問題)
12.
テーブル定義を変更すると… キャプチャインスタンスは、1テーブルに対し最大 2
個まで関連付けることが出来る。 定義を変更したら再度別名でキャプチャインスタンスを作成し、 旧キャプチャインスタンスのデータを移行(INSERT~SELECT)して、削除することで定義の変更にも対応?!
13.
デモ 新しく列を追加後に、更新処理を行う キャプチャ対象の列を削除し、更新処理を行う
キャプチャインスタンスをもう一つ作成し、更新処理を行う。 キャプチャインスタンスのデータ移行(旧 -> 新)
14.
CDC を使ってみる 3.キャプチャインスタンスの削除
@capture_instanceに ‘all’ を指定した場合は、テーブルに紐付く全てのキャプチャインスタンスが削除される。 システムテーブルに、履歴用のテーブルが削除される。 テンプレート:Change Data Capture - Configuration - Disable a Capture Instance for a Table を参考に EXEC sys.sp_cdc_disable_table @source_schema = N'スキーマ名', @source_name = N‘テーブル名', @capture_instance = N‘キャプチャインスタンス名 又は all' GO
15.
CDC を使ってみる 3.データベース
で CDC を無効にする キャプチャインスタンスが存在してても、無効に出来る。 履歴用のテーブル等も全削除される。 システムテーブルやスキーマー、ユーザーに色々と追加されたのが削除される。 テンプレート:Change Data Capture - Configuration - Disable Database for CDC を参考に EXEC sys.sp_cdc_disable_db GO
16.
CDC をちゃんと使いたい… ある期間で変更されたデータを取得する
履歴データの管理(破棄やローテーション) 列の型は何対応してるの? ミラーリング/レプリケーションとか? http://msdn.microsoft.com/ja-jp/library/cc645938.aspx を参考に!
17.
Change Tracking を使ってみる
1.データベースで Tracking を有効化 CHANGE_RENTENTION:数値 単位(DAYS,HOUR,MINUTES) AUTO_CLEANUP:ON,OFF テンプレート:Change Tracking - Set Change Tracking on Database を参考に ALTER DATABASE データベース名SET CHANGE_TRACKING = ON ( CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON ) GO SSMS から GUI で設定可能!
18.
Change Tracking を使ってみる
1’.SSMS を使って GUI で設定する
19.
Change Tracking を使ってみる
2.テーブルで Tracking を有効化 TRACK_COLUMNS_UPDATED:ON,OFF 変更した列も記録出来るが使いにくいので、OFF推奨! テンプレート:Change Tracking - Enable Change Tracking on Table を参考に ALTER TABLE スキーマ名.テーブル名 ENABLE CHANGE_TRACKING WITH ( TRACK_COLUMNS_UPDATED = OFF ) GO SSMS から GUI で設定可能!
20.
Change Tracking を使ってみる
2’.SSMS を使って GUI で設定する
21.
Change Tracking を使ってみる
3.変更を確認する @version は、どの時点からの変更分を確認する。 初回は、最小のバージョン番号を指定する。 SELECT * FROM CHANGETABLE ( CHANGES [テーブル名], @version ) AS c CHANGE_TRACKING_MIN_VALID_VERSION( OBJECT_ID(‘スキーマ名.テーブル名') )
22.
Change Tracking を使ってみる
4.変更された列の確認は? Bit マスクで変更されたか確認している! しかも 1列ずつしか出来ない! DECLARE @changeColumnvarbinary(4100) SELECT @changeColumn = c.SYS_CHANGE_COLUMNS FROM CHANGETABLE ( CHANGES [テーブル名], バージョン番号) AS c WHERE ~ SELECT CHANGE_TRACKING_IS_COLUMN_IN_MASK ( COLUMNPROPERTY( OBJECT_ID(‘スキーマ名.テーブル名’), ‘カラム名', 'ColumnId‘ ) ,@changeColumn-- NULL だと、変更した扱いになる。使えね… )
23.
Change Tracking を使ってみる
5.変更時にマークをつけることが可能 更新時に VARBINARY で設定し、SYS_CHANGE_CONTEXTから CAST して取り出す。 DECLARE @originator_idVARBINARY(128); SET @originator_id = CAST(N'アプリで追加' AS VARBINARY(128)); WITH CHANGE_TRACKING_CONTEXT ( @originator_id ) INSERT INTO ~ SELECT * , CAST(SYS_CHANGE_CONTEXT AS NVARCHAR) FROM CHANGETABLE ( CHANGES [テーブル名], @version ) AS c
24.
デモ CHANGETABLE で違うバージョン番号を渡すと同じデータでも見え方が異なる。(INSERT
-> UPDATE 等) 列の変更確認 変更内容の設定/確認
25.
Change Tracking を使ってみる
6.テーブルで Tracking を無効化 SSMS から GUI で設定可能。 テンプレート:Change Tracking - Disable Change Tracking on Table を参考に ALTER TABLE スキーマ名.テーブル名 DISABLE CHANGE_TRACKING GO
26.
Change Tracking を使ってみる
7.データベースで Tracking を無効化 全てのテーブルの Tracking を無効にしていないと、エラーになる。 テンプレート:Change Tracking - Set Change Tracking on Database を参考に ALTER DATABASE データベース名SET CHANGE_TRACKING = OFF GO
27.
まとめ 変更データキャプチャ Enterprise
Edition のみ 履歴も保持する テンプレートが充実 変更の追跡 Express Edition でもOK 履歴は保持しない テンプレートが少ない 検証/デバッグ用途で (Developer Edition) 他ストレージとの 同期用途で
28.
おまけ - SQL
Azure では CDC, Change Tracking ともに未サポート http://msdn.microsoft.com/en-us/library/ee336237.aspx http://msdn.microsoft.com/en-us/library/ee336253.aspx SQL Azure Data Sync or Sync Framework で オンプレミスの SQL Server と同期すれば… ->同期を実行したタイミングでしかオンプレミスの SQL Server にデータが反映されないので、全ての履歴を残す事は出来ない。
Télécharger maintenant