无法启用 Microsoft 更改数据捕获 (CDC) sp_cdc_enable_db

问题描述 投票:0回答:1

我正在使用 SQL Server 2019 并尝试在数据库上启用 Microsoft CDC。

如果我创建一个新数据库并运行 EXEC sys.sp_cdc_enable_db 我看到“命令已成功完成,并且显示其已从 sys.databases 启用

enter image description here

问题:

我有一个现有的旧数据库,我想将其设置为 cdc,如果我克隆它并运行命令 EXEC sys.sp_cdc_enable_db 我得到:

Could not update the metadata that indicates database existing_db_cdc is enabled for Change Data Capture. The failure occurred when executing the command 'SetCDCTracked(Value = 1)'. The error returned was 15517: 'Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated, or you do not have permission.'.

我用谷歌搜索并找到了这个答案:EXEC sp_changedbowner 'sa'

这会将所有者从与 cdc_test 相同的所有者更改为 sa: DB principal

重新运行

EXEC sys.sp_cdc_enable_db
给了我一个新的错误
Could not update the metadata that indicates database existing_db_cdc is enabled for Change Data Capture. The failure occurred when executing the command 'sp_cdc_create_objects'. The error returned was 2759: 'CREATE SCHEMA failed due to previous errors.'

我在这里不知所措,并尝试再次更改数据库所有者,但如果我将其更改回前一个错误,则错误不会改变,我仍然看到第二个错误而不是第一个错误。

我在 cdc_test 数据库上的数据库主体是: db principals cdc_test 而在existing_db_cdc上是将数据库所有者设置为sa之后: db principals existing_db_cdc

我尝试过的其他事情:

  1. 将 DATABASE::[existing_db_cdc] 的授权更改为 sa - 重新运行时
    exec sys.sp_cdc_enable_db
    返回第二个错误
  2. 比较从
    sysservers
    serverproperty('servername')
    的服务器名称,这些在两个数据库上都匹配

注意事项 该数据库与最初创建它的服务器位于不同的服务器上,位于我的本地主机上,尝试在之前所在的服务器上出现相同的错误。

不确定这个克隆的数据库有什么不同或者还有什么可以尝试的 这个堆栈溢出说他们将其与数据库触发器相关,但答案有一个死链接,我不知道如何找到它。

这是两个数据库上的两个 dbo 用户,我尝试用

alter user dbo with LOGIN = dbo
更改现有的用户,但得到了
Cannot alter the user'dbo'
dbo users

sql-server cdc
1个回答
0
投票

如果您仍在处理这个问题,我们也遇到过同样的问题。

在我们的例子中,解决方案是禁用任何正在审核数据库对象(函数、表、过程等)更改的自定义数据库触发器。

也许这不是你的情况,但希望它有帮助。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.