亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關(guān)注微信公眾號(hào)

使用SQL Server 2008 CDC捕獲DDL改變
2009-05-21   

SQL Server 2008推出了一個(gè)新的特性叫做變化數(shù)據(jù)捕獲(CDC)。CDC捕獲在一個(gè)SQL Server表上的DDL和DML活動(dòng),并將變化放置在一個(gè)單獨(dú)的SQL Server關(guān)系表中。在這篇文章中,我們將看到CDC怎樣幫助數(shù)據(jù)庫(kù)管理員跟蹤用于SQL Server 表的DML變化。CDC特性默認(rèn)情況下是在數(shù)據(jù)庫(kù)級(jí)別關(guān)閉的。Sysadmin服務(wù)器角色的一個(gè)成員必須使一個(gè)數(shù)據(jù)庫(kù)可用于CDC。當(dāng)這個(gè)數(shù)據(jù)庫(kù)可用于CDC時(shí),任何dbo固定數(shù)據(jù)庫(kù)角色的成員都可以使數(shù)據(jù)庫(kù)中的表用于變化數(shù)據(jù)捕獲。

  變化數(shù)據(jù)捕獲概覽

  當(dāng)CDC可用在數(shù)據(jù)庫(kù)級(jí)別時(shí),下一步是使CDC可用于一個(gè)需要捕獲變化的特定表。CDC特性集合了從數(shù)據(jù)庫(kù)事務(wù)日志文件獲得的變化數(shù)據(jù),并將變化信息插入到一個(gè)關(guān)聯(lián)的變化表中,它是在CDC建立和配置過(guò)程中創(chuàng)建的。在源表和變化捕獲表之間有一個(gè)一對(duì)一的關(guān)系。你對(duì)一個(gè)單獨(dú)的源表最多可以有兩個(gè)變化表。因?yàn)镃DC特性需要不斷地讀取事務(wù)日志文件,所以顯而易見(jiàn),CDC運(yùn)行SQL Server代理應(yīng)該一直執(zhí)行的。

  怎樣使一個(gè)SQL Server 2008數(shù)據(jù)庫(kù)可以使用CDC

  1. 使用SQL Server管理套件連接到SQL Server 2008實(shí)例。

  2. 在查詢窗口中,輸入下面的TSQL查詢來(lái)創(chuàng)建一個(gè)ChangeDataCapture 數(shù)據(jù)庫(kù)。

Use Master
Go
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'ChangeDataCapture')
DROP DATABASE ChangeDataCapture
GO
USE [master]
GO
Create Database ChangeDataCapture
Go

  3. 當(dāng)這個(gè)數(shù)據(jù)庫(kù)成功創(chuàng)建之后,你需要使這個(gè)數(shù)據(jù)庫(kù)可以使用數(shù)據(jù)捕獲特性,這可以通過(guò)執(zhí)行下面的TSQL查詢來(lái)實(shí)現(xiàn):

Use ChangeDataCapture
Go
EXEC sys.sp_cdc_enable_db
Go

SQL SERVER

  4. 執(zhí)行下面的查詢來(lái)檢查這個(gè)數(shù)據(jù)庫(kù)是否可用于CDC:

Select [name] as DBName, is_cdc_enabled from sys.databases

is_cdc_enabled 字段的值為1代表這個(gè)數(shù)據(jù)庫(kù)可用于CDC,而0意味著CDC不可用。

SQL SERVER

  5. 當(dāng)數(shù)據(jù)庫(kù)可用于CDC時(shí),你就可以看到在ChangeDataCapture數(shù)據(jù)庫(kù)中創(chuàng)建的新cdc schema、cdc用戶、新的元數(shù)據(jù)表和其它系統(tǒng)對(duì)象。當(dāng)使得CDC可用在一個(gè)數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)管理員要時(shí)刻牢記的最重要的事情是確保這個(gè)數(shù)據(jù)庫(kù)在配置CDC之前沒(méi)有cdc schema或cdc用戶。如果在這個(gè)數(shù)據(jù)庫(kù)中有cdc schema或cdc用戶,那么CDC的配置將會(huì)失敗,所以數(shù)據(jù)庫(kù)管理員需要在配置CDC之前從數(shù)據(jù)庫(kù)中刪除或重命名之前存在的cdc schema或用戶。

SQL SERVER

  怎樣為一個(gè)SQL Server 2008數(shù)據(jù)庫(kù)表配置CDC

  1. 現(xiàn)在讓我們執(zhí)行下面的TSQL查詢?cè)贑hangeDataCapture數(shù)據(jù)庫(kù)中創(chuàng)建Currency表:  

Use ChangeDataCapture
Go
Create table Currency
(
CurrencyKey Int Identity(1,1) Primary Key NOT NULL,
CurrencyAlternateKey varchar(5)
)

SQL SERVER

2. 當(dāng)Currency表成功創(chuàng)建之后,你需要確保SQL Server 代理服務(wù)正在運(yùn)行。為了使CDC成功,SQL Server 代理應(yīng)該運(yùn)行。

  3. 通過(guò)執(zhí)行下面提到的TSQL查詢使CDC可用于表Currency。

Use ChangeDataCapture
Go
EXEC sp_cdc_enable_table 'dbo', 'Currency', @role_name = NULL, @supports_net_changes =1
Go

SQL SERVER

  4. 執(zhí)行下面的查詢來(lái)檢查這個(gè)表是否可以使用CDC:

Use ChangeDataCapture
Go
Select [name], is_tracked_by_cdc from sys.tables
GO

  is_tracked_by_cdc字段值為1代表CDC可用于這個(gè)表,而值為0代表CDC不可用。 

SQL SERVER

  5. 當(dāng)你使CDC可用于Currency表后,另一個(gè)表被創(chuàng)建以保存變化數(shù)據(jù)和關(guān)于源表中變化的信息。新創(chuàng)建的表名稱為cdc.dbo_Currency_CT,如下圖所示。

  6. 下一步是修改Currency表來(lái)添加CurrencyName字段: 

Use ChangeDataCapture
Go
Alter table Currency add CurrencyName varchar(25)
Go

  7. 可以通過(guò)執(zhí)行下面的TSQL查詢來(lái)查看Currency表所發(fā)生的DDL改變:

Use ChangeDataCapture
Go
Select OBJECT_NAME(Source_Object_ID) As [Table Name], 
            OBJECT_NAME(Object_ID) As [CDC Table Name],
                DDL_Command As [DDL Command],
            DDL_LSN As [Log Sequence Number],
            DDL_Time As [DateModified]
From CDC.ddl_history
Go

SQL SERVER

  總結(jié)

  變化數(shù)據(jù)捕獲特性幫助數(shù)據(jù)庫(kù)管理員使得可以在一個(gè)數(shù)據(jù)庫(kù)表上使用CDC并跟蹤一個(gè)特定用戶表上所有數(shù)據(jù)庫(kù)定義語(yǔ)言的改變。

熱詞搜索:

上一篇:SQL Server 2008的透明數(shù)據(jù)加密
下一篇:Wi-Fi游走于WiMAX和3G之間嗎?

分享到: 收藏