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

首頁 > 數據庫 > SQL Server > 正文

SQLServer 2008 CDC實現數據變更捕獲使用圖文詳解

2020-01-28 15:47:17
字體:
來源:轉載
供稿:網友
適用環境:

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

詳解:

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

步驟:本文中以:AdventureWorks為例

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

在當前庫使用sys.sp_cdc_enable_db。返回0(成功)或1(失敗)。注意,無法對系統數據庫和分發數據庫啟用該功能。且執行者需要用sysadmin角色權限。

該存儲過程的作用域是整個目標庫。包含元數據、DDL觸發器、cdc架構和cdc用戶。

使用以下代碼啟用:


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

消息22830,級別16,狀態1,過程sp_cdc_enable_db_internal,第193 行

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

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

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

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

經過檢查,uspUpdateEmployeeHireInfo這個存儲過程的確有:WITH EXECUTE AS CALLER

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

現在重新執行:


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

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

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



創建成功后,將自動添加CDC用戶和CDC架構。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 于都县| 康乐县| 临洮县| 冀州市| 嘉禾县| 抚松县| 阿克| 芜湖县| 浪卡子县| 佳木斯市| 南丰县| 石楼县| 邢台市| 邢台县| 定日县| 平乐县| 措美县| 云阳县| 宜良县| 永春县| 乐至县| 北宁市| 五寨县| 文登市| 甘泉县| 那坡县| 罗平县| 珲春市| 阜城县| 辽阳市| 阿坝| 盐池县| 涞水县| 天镇县| 定兴县| 德阳市| 祁连县| 永丰县| 鄢陵县| 绥宁县| 定陶县|