成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server 2008 CDC功能的主要作用是什么?

數據庫 SQL Server
我們今天主要是和大家一起分享的是SQL Server 2008 CDC功能,以及對SQL Server 2008 CDC功能的主要作用的描述。

以下的文章主要向大家描述的是SQL Server 2008 CDC功能,我們大家都知道SQL Server 2008 CDC(Change Data Capture)其主要是通過對事務日志的異步讀取,記錄DML操作的發生時間、類型和實際影響的數據變化,然后將這些數據記錄到啟用CDC時自動創建的表中。

通過SQL Server 2008 CDC相關的存儲過程,可以獲取詳細的數據變化情況。由于數據變化是異步讀取的,因此對整體性能的影響不大,遠小于通過Trigger實現的數據變化記錄。

下面我用一個實例講解這個功能。該功能主要在ETL解決方案中比較有用。

  1. USE AdventureWorksDW;  
  2. GO  
  3. EXECUTE sys.sp_cdc_enable_db; --啟用數據庫對CDC的支持  
  4. GO   
  5. EXEC sys.sp_cdc_enable_table 'dbo',   
  6. 'FactInternetSales', @role_name = NULL, @supports_net_changes =0; --啟用某個表對CDC的支持  
  7. GO  

這里的supports_net_changes指的是是否支持所謂的凈更改,即過濾掉重復的

  1. SELECT name, is_tracked_by_cdc FROM sys.tables   
  2. WHERE name LIKE ('fact%');   
  3. INSERT INTO FactInternetSales  
  4. VALUES(484,1127,1139,1134,18759,1,100,6,'SO75124',1,1,1,21.9800,21.9800,0,0,8.2205,8.2205,21.9800,1.7584,0.5495,NULL,NULL);   
  5. INSERT INTO FactInternetSales   
  6. VALUES(486,1127,1139,1134,18759,1,100,6,'SO75125',1,1,1,21.9800,21.9800,0,0,8.2205,8.2205,21.9800,1.7584,0.5495,NULL,NULL);   
  7. UPDATE FactInternetSales   
  8. SET PromotionKey = 2  
  9. WHERE SalesOrderNumber = 'SO75124';   
  10. DELETE FROM FactInternetSales WHERE SalesOrderNumber='SO75125'   
  11. SELECT * FROM cdc.dbo_FactInternetSales_CT; 

這個表其實是在系統表里面

 

這里將看到4條結果,其中operation為3和4是update操作的那條,3表示舊值,4表示新值

2表示新增

1表示刪除

  1. DECLARE @begin_time datetime, @end_time datetime, @from_lsn binary(10), @to_lsn binary(10);  
  2. -- Obtain the beginning of the time interval.  
  3. SET @begin_time = GETDATE()-1;   
  4. SET @end_time = GETDATE();  
  5. -- Map the time interval to a change data capture query range.  
  6. SELECT @from_lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than or equal', @begin_time);  
  7. SELECT @to_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal', @end_time);  
  8. print @begin_time  
  9. print @end_time  
  10. print @from_lsn  
  11. print @to_lsn  

創建一個存儲過程,根據開始時間和結束時間讀取變更記錄

 

  1. CREATE PROC GetCDCResult  
  2. (@begin_time DATETIME,@end_time DATETIME)  
  3. AS  
  4. DECLARE @from_lsn binary(10), @to_lsn binary(10);  
  5. SELECT @from_lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than or equal', @begin_time);  
  6. SELECT @to_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal', @end_time);  
  7. SELECT * FROM cdc.dbo_FactInternetSales_CT WHERE __$start_lsn BETWEEN @from_lsn AND @to_lsn  

調用該存儲過程

  1. EXEC GetCDCResult '2009-4-27','2009-4-29'  

撤銷SQL Server 2008 CDC

 

  1. EXEC sys.sp_cdc_disable_table 'dbo',   
  2. 'FactInternetSales','All'   
  3. EXEC sys.sp_cdc_disable_db  

有朋友可能會問到:CDC到底是怎么做到的呢?

下面這篇文章很詳細地講解到了該原理

 

http://technet.microsoft.com/zh-cn/library/cc645937.aspx

我總結幾個重點

 

1. 其實,它是有一個獨立的進程的。它是異步地讀取日志文件。如果某部分更改沒有被進程讀到,那么此時日志截斷也是沒有效果的,很顯然需要這樣來保證。

2. net_changes是什么意思呢?說的是針對一行記錄,如果有多個更改的話,那么以***的一條為準。

3. 這個更改是不是會永遠保存?不會的,它會定期清除的

捕獲和清除作業都是使用默認參數創建的。將立即啟動捕獲作業。它連續運行,每個掃描周期最多可處理 1000 個事務,并在兩個周期之間停頓 5 秒鐘。清除作業在每天凌晨 2 點運行一次。它將更改表項保留三天(4320 分鐘),可使用單個刪除語句最多刪除 5000 項。

 

 

4. 如果啟用了之后,修改了表的結構,會怎么樣?

為適應固定列結構更改表,在為源表啟用變更數據捕獲后,負責填充更改表的捕獲進程將忽略未指定進行捕獲的任何新列。如果刪除了某個跟蹤的列,則會為在后續更改項中為該列提供 Null 值。

但是,如果現有列更改了其數據類型,則會將更改傳播到更改表,以確保捕獲機制沒有導致跟蹤的列發生數據丟失。捕獲進程還會將檢測的跟蹤表列結構的任何更改發送到 cdc.ddl_history 表。如果使用者希望得到下游應用程序中可能需要進行的調整的通知,請使用 sys.sp_cdc_get_ddl_history 存儲過程。

【編輯推薦】

  1. MS SQL Server問題與其正確解答方案
  2. SQL Server數據庫與指定范圍行的SQL語句的寫法
  3. SQL Server 數據導入的實際行為規范描述
  4. SQL Server 2000的安全策略的正確打造
  5. SQL Server DateTime數據類型的另類解讀

     

     

     

    以上的相關內容就是對SQL Server 2008 CDC功能的介紹,望你能有所收獲。

 

責任編輯:佚名 來源: TT安全
相關推薦

2010-06-30 15:24:49

SQL Server子

2009-07-07 16:38:36

ServletCont

2010-04-23 16:56:26

OracleSQL調優

2011-08-30 17:06:29

SQL Server CDC

2022-02-18 11:06:12

首席技術官技術人工智能

2022-11-23 16:23:12

2022-11-23 11:15:22

2024-03-12 15:33:40

2010-07-20 09:15:03

SQL Server

2020-07-27 18:13:36

電腦主板功能

2019-12-02 08:18:51

CISO首席信息安全官網絡安全

2021-04-19 21:58:32

智能照明商業建筑

2022-04-08 13:58:19

物聯網車隊管理企業

2020-03-11 08:15:08

物聯網智慧城市互聯網

2022-09-27 09:52:14

物聯網邊緣計算

2010-07-19 12:47:04

SQL Server

2020-02-25 10:41:14

信息安全字化轉型

2022-09-16 10:00:34

物聯網制造業

2010-06-18 13:01:06

SQL Server

2011-03-29 13:56:12

SQL Server 數據壓縮
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久99精品久久久久久国产越南 | 精品91 | 国产激情在线播放 | 国产成人免费观看 | 自拍偷拍亚洲欧美 | 91麻豆精品国产91久久久久久 | 亚洲一区二区在线视频 | 欧美人成在线视频 | 请别相信他免费喜剧电影在线观看 | 日韩美女在线看免费观看 | 欧美精品一区二区三区在线四季 | 中文字幕国产 | 日韩综合网 | 欧美在线一区二区三区 | 国产九九av | 最新超碰| 亚洲成人一区 | 成人精品一区 | 国产精品7777777 | 国产精品一区二区在线播放 | 亚洲欧洲国产视频 | 国产精品一区网站 | 日韩成人精品在线 | 99在线精品视频 | 天天干天天谢 | 国产91九色 | 精品久久影院 | 久久综合爱 | 亚洲欧美成人影院 | 欧美啪啪网站 | 在线中文视频 | 日韩中文字幕av | 亚洲一区二区三区四区在线观看 | 日本手机在线 | 国产乱码久久久久久 | 国产精品区一区二 | 91爱啪啪| 麻豆av一区二区三区久久 | 一区二区免费 | 伊人久久免费 | caoporn国产精品免费公开 |