【问题标题】:Could not find stored procedure "sys.sp_cdc_enable_db_internal"找不到存储过程“sys.sp_cdc_enable_db_internal”
【发布时间】: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


    【解决方案1】:

    该功能仅在 SQL Server Enterprise 和 Developer 版本中可用。它只能使用系统存储过程来启用。 SQL Server Management Studio 为各种与功能相关的操作提供了广泛的代码模板

    打开模板:

    1. 在 SQL Server Management Studio 菜单中,打开查看
    2. 点击模板
    3. 打开 SQL Server 模板
    4. 打开更改数据捕获子文件夹。提供用于管理、配置、枚举和元数据查询的 T-SQL 模板

    设置功能:

    确保 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/

    【讨论】:

    • 您好,感谢您的详细解答。我已经为我的数据库启用了 CDC,为使用 sys.sp_cdc_enable_table 的表启用了 CDC,了解捕获的列列表并知道 CDC 数据的去向。我的问题是,在查看 sys.sp_cdc_enable_db 的定义时,SSMS 告诉我它找不到存储过程 sys.sp_cdc_enable_db_internal。请问有人知道为什么吗?谢谢
    猜你喜欢
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    相关资源
    最近更新 更多