国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQLServer 2008 CDC實現(xiàn)數(shù)據(jù)變更捕獲使用圖文詳解

2019-10-26 16:47:56
字體:
供稿:網(wǎng)友
適用環(huán)境:

僅在SQLServer2008(含)以后的企業(yè)版、開發(fā)版和評估版中可用。

詳解:

CDC功能主要捕獲SQLServer指定表的增刪改操作,由于任何操作都會寫日志(哪怕truncate),所以CDC的捕獲來源于日志文件。日志文件會把更改應(yīng)用到數(shù)據(jù)文件中,同時也會標記符合要求的數(shù)據(jù)標記為需要添加跟蹤的項。然后通過一些配套函數(shù),最后寫入到數(shù)據(jù)倉庫中。大概流程:

步驟:本文中以:AdventureWorks為例

第一步、對目標庫顯式啟用CDC:

在當(dāng)前庫使用sys.sp_cdc_enable_db。返回0(成功)或1(失?。?。注意,無法對系統(tǒng)數(shù)據(jù)庫和分發(fā)數(shù)據(jù)庫啟用該功能。且執(zhí)行者需要用sysadmin角色權(quán)限。

該存儲過程的作用域是整個目標庫。包含元數(shù)據(jù)、DDL觸發(fā)器、cdc架構(gòu)和cdc用戶。

使用以下代碼啟用:


復(fù)制代碼代碼如下:</p><p>USE AdventureWorks</p><p>GO</p><p>EXECUTE sys.sp_cdc_enable_db;
GO</p><p>
在一開始直接執(zhí)行時,出現(xiàn)了報錯信息:

消息22830,級別16,狀態(tài)1,過程sp_cdc_enable_db_internal,第193 行

無法更新元數(shù)據(jù)來指示已對數(shù)據(jù)庫AdventureWorks 啟用了變更數(shù)據(jù)捕獲。執(zhí)行命令'SetCDCTracked(Value = 1)' 時失敗。返回的錯誤為15517: '無法作為數(shù)據(jù)庫主體執(zhí)行,因為主體"dbo" 不存在、無法模擬這種類型的主體,或您沒有所需的權(quán)限。'。請使用此操作和錯誤來確定失敗的原因并重新提交請求。

這里引出了另外一個知識點:錯誤號 15517 的錯誤

這種錯誤會在很多地方出現(xiàn),如還原數(shù)據(jù)庫的時候也會有可能出現(xiàn)。共同點是:某個/些存儲過程使用了具有WITHEXECUTE AS 的選項。使其在當(dāng)前庫具有了某個架構(gòu),但是當(dāng)在別的地方執(zhí)行時,由于沒有這個架構(gòu),所以就報錯,解決方法:

ALTER AUTHORIZATION ON DATABASE::[AdventureWorks] TO [sa]

經(jīng)過檢查,uspUpdateEmployeeHireInfo這個存儲過程的確有:WITH EXECUTE AS CALLER

使用sa的原因是即使sa被禁用,sa還是存在的。所以不會報錯。

現(xiàn)在重新執(zhí)行:


復(fù)制代碼代碼如下:</p><p>USE AdventureWorks</p><p>GO</p><p>EXECUTE sys.sp_cdc_enable_db;</p><p>GO</p><p>

啟用成功,然后通過以下語句檢查是否成功:

復(fù)制代碼代碼如下:</p><p>SELECT is_cdc_enabled,CASEWHENis_cdc_enabled=0THEN'CDC功能禁用'ELSE'CDC功能啟用'END描述</p><p>FROM sys.databases</p><p>WHERE NAME = 'AdventureWorks'



創(chuàng)建成功后,將自動添加CDC用戶和CDC架構(gòu)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 保德县| 静海县| 呼图壁县| 赤壁市| 白城市| 克山县| 邓州市| 阿巴嘎旗| 乡宁县| 吴川市| 岢岚县| 镇平县| 威信县| 清苑县| 姜堰市| 会理县| 乌兰县| 逊克县| 永川市| 聂拉木县| 玛曲县| 英超| 阿巴嘎旗| 哈密市| 广州市| 杭锦后旗| 洱源县| 东乡族自治县| 宣汉县| 泗洪县| 双流县| 太谷县| 兴宁市| 云安县| 松潘县| 海口市| 铜山县| 蒲城县| 项城市| 云和县| 禄丰县|