自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

通過SQL Server 2008 CDC相關(guān)的存儲(chǔ)過程,可以獲取詳細(xì)的數(shù)據(jù)變化情況。由于數(shù)據(jù)變化是異步讀取的,因此對(duì)整體性能的影響不大,遠(yuǎn)小于通過Trigger實(shí)現(xiàn)的數(shù)據(jù)變化記錄。

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

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

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

  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; 

這個(gè)表其實(shí)是在系統(tǒng)表里面

 

這里將看到4條結(jié)果,其中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  

創(chuàng)建一個(gè)存儲(chǔ)過程,根據(jù)開始時(shí)間和結(jié)束時(shí)間讀取變更記錄

 

  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  

調(diào)用該存儲(chǔ)過程

  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  

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

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

 

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

我總結(jié)幾個(gè)重點(diǎn)

 

1. 其實(shí),它是有一個(gè)獨(dú)立的進(jìn)程的。它是異步地讀取日志文件。如果某部分更改沒有被進(jìn)程讀到,那么此時(shí)日志截?cái)嘁彩菦]有效果的,很顯然需要這樣來保證。

2. net_changes是什么意思呢?說的是針對(duì)一行記錄,如果有多個(gè)更改的話,那么以***的一條為準(zhǔn)。

3. 這個(gè)更改是不是會(huì)永遠(yuǎn)保存?不會(huì)的,它會(huì)定期清除的

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

 

 

4. 如果啟用了之后,修改了表的結(jié)構(gòu),會(huì)怎么樣?

為適應(yīng)固定列結(jié)構(gòu)更改表,在為源表啟用變更數(shù)據(jù)捕獲后,負(fù)責(zé)填充更改表的捕獲進(jìn)程將忽略未指定進(jìn)行捕獲的任何新列。如果刪除了某個(gè)跟蹤的列,則會(huì)為在后續(xù)更改項(xiàng)中為該列提供 Null 值。

但是,如果現(xiàn)有列更改了其數(shù)據(jù)類型,則會(huì)將更改傳播到更改表,以確保捕獲機(jī)制沒有導(dǎo)致跟蹤的列發(fā)生數(shù)據(jù)丟失。捕獲進(jìn)程還會(huì)將檢測(cè)的跟蹤表列結(jié)構(gòu)的任何更改發(fā)送到 cdc.ddl_history 表。如果使用者希望得到下游應(yīng)用程序中可能需要進(jìn)行的調(diào)整的通知,請(qǐng)使用 sys.sp_cdc_get_ddl_history 存儲(chǔ)過程。

【編輯推薦】

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

     

     

     

    以上的相關(guān)內(nèi)容就是對(duì)SQL Server 2008 CDC功能的介紹,望你能有所收獲。

 

責(zé)任編輯:佚名 來源: TT安全
相關(guān)推薦

2010-06-30 15:24:49

SQL Server子

2009-07-07 16:38:36

ServletCont

2022-02-18 11:06:12

首席技術(shù)官技術(shù)人工智能

2011-08-30 17:06:29

SQL Server CDC

2010-04-23 16:56:26

OracleSQL調(diào)優(yōu)

2022-11-23 11:15:22

2022-11-23 16:23:12

2024-03-12 15:33:40

2010-07-20 09:15:03

SQL Server

2020-07-27 18:13:36

電腦主板功能

2020-03-11 08:15:08

物聯(lián)網(wǎng)智慧城市互聯(lián)網(wǎng)

2022-04-08 13:58:19

物聯(lián)網(wǎng)車隊(duì)管理企業(yè)

2022-09-27 09:52:14

物聯(lián)網(wǎng)邊緣計(jì)算

2019-12-02 08:18:51

CISO首席信息安全官網(wǎng)絡(luò)安全

2021-04-19 21:58:32

智能照明商業(yè)建筑

2020-02-25 10:41:14

信息安全字化轉(zhuǎn)型

2022-09-16 10:00:34

物聯(lián)網(wǎng)制造業(yè)

2010-07-19 12:47:04

SQL Server

2010-06-18 13:01:06

SQL Server

2011-03-29 13:56:12

SQL Server 數(shù)據(jù)壓縮
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)