SQL Server 2008复制失败:进程无法执行'sp_replcmds'

skb*_*skb 26 replication sql-server-2008

我有一个SQL复制问题,我修复时遇到问题.我正在做的是从生产备份中恢复两个DB,然后在它们之间安装复制.复制似乎配置没有任何错误,但是当我查看状态时,我看到如下错误消息:

我有一个SQL复制问题,我修复时遇到问题.我正在做的是从生产备份中恢复两个DB,然后在它们之间安装复制.复制似乎没有任何错误配置,但是当我查看复制监视器中的状态时,我看到如下错误消息:

错误消息:

该进程无法在'MYSERVER1'上执行'sp_replcmds'.获取帮助:http:// help/MSSQL_REPL20011

无法作为数据库主体执行,因为主体"dbo"不存在,此类主体不能被模拟,或者您没有权限.(来源:MSSQLServer,错误号:15517)获取帮助: http:// help/15517

该进程无法在'MYSERVER1'上执行'sp_replcmds'.获取帮助:http:// help/MSSQL_REPL22037

这是什么意思?

Mat*_*ist 60

当我遇到此问题时,我的数据库没有正确设置所有者.我从另一个Windows域恢复了一个数据库,右键单击了数据库 - >属性,并在"常规"选项卡中验证了所有者设置正确.但是,在"文件"选项卡中,未设置所有者.一旦我设置它,复制运行没有问题.

  • 这个答案救了我的理智!我进行了跟踪,发现在“文件”选项卡中更改所有者将调用sp_changedbowner,该调用将称为“ ALTER AUTHORIZATION ...”,如Remus对这个问题的回答中所述。 (2认同)
  • 这也为我修复了,非常感谢! (2认同)

Rem*_*anu 22

'dbo'映射到无效的登录名.如果你运行select suser_sname(owner_sid) from sys.databases,你可能会获得这两个DB的NULL.您需要将"dbo"更改为有效登录.在两个数据库上运行:

ALTER AUTHORIZATION ON DATABASE::[<dbname>] TO [sa]
Run Code Online (Sandbox Code Playgroud)