【发布时间】:2018-04-05 11:59:11
【问题描述】:
我是 CDC 的新手,因此我开始研究在 SQL Server 数据库中启用 CDC 的存储过程。检查sys.sp_cdc_enable_db,我收到消息找不到存储过程sys.sp_cdc_enable_db_internal。我查看了整个数据库以及 master 和 msdb 数据库。谁能告诉我为什么 SSMS 找不到这个存储过程?
【问题讨论】:
标签: sql sql-server
我是 CDC 的新手,因此我开始研究在 SQL Server 数据库中启用 CDC 的存储过程。检查sys.sp_cdc_enable_db,我收到消息找不到存储过程sys.sp_cdc_enable_db_internal。我查看了整个数据库以及 master 和 msdb 数据库。谁能告诉我为什么 SSMS 找不到这个存储过程?
【问题讨论】:
标签: sql sql-server
该功能仅在 SQL Server Enterprise 和 Developer 版本中可用。它只能使用系统存储过程来启用。 SQL Server Management Studio 为各种与功能相关的操作提供了广泛的代码模板
打开模板:
设置功能:
确保 SQL Server 代理正在运行。如果没有,请在对象资源管理器中右键单击它,然后单击开始
要在数据库上启用该功能,请打开 Configuration 子文件夹中的 Enable Database for CDC 模板,并将数据库名称替换为您要跟踪的数据库的名称
USE AdventureWorks2012
GO
EXEC sys.sp_cdc_enable_db
GO
使用的登录名必须具有 SQL Server 系统管理员权限,并且必须是数据库的 db_owner。否则会报如下错误
sg 22830,级别 16,状态 1,过程 sp_cdc_enable_db_internal,行 193 执行命令失败 'SetCDCTracked(值 = 1)'。返回的错误是 15517:‘不能 作为数据库主体执行,因为主体“dbo”不 存在,这种类型的主体不能被模拟,或者你没有 有许可。使用操作和错误来确定原因 失败并重新提交请求。
查看更多信息
https://solutioncenter.apexsql.com/enable-use-sql-server-change-data-capture/
【讨论】: