近闲来无事,决定研究下事务复制
配置完事务复制,启动SQL serverAgent 后,查看同步状态,发现提示错误
错误消息:
- 进程无法在“XX计算机名”上执行“sp_replcmds”。 (源: MSSQL_REPL,错误号: MSSQL_REPL20011)
获取帮助: http://help/MSSQL_REPL20011 - 无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限。 (源: MSSQLServer,错误号: 15517)
获取帮助: http://help/15517 - 进程无法在“XX计算机名”上执行“sp_replcmds”。 (源: MSSQL_REPL,错误号: MSSQL_REPL22037)
获取帮助: http://help/MSSQL_REPL22037
排查原因:
运行以下语句,查看每个数据库实例是否都有所有者
select name, suser_sname(owner_sid)from sys.databases;
解决办法:
方法一:(亲测有效)
右键单击了数据库->属性 ,并在“常规”选项卡中验证了所有者设置正确。 但是,在“文件”选项卡中,未设置所有者。一旦设置好数据库拥有者,复制运行没有问题。
方法二:
ALTER AUTHORIZATION ON DATABASE::[<dbname>] TO [sa]
例:
alter authorization on database::[test2] to [node3\administrator]
方法三:
USE [<dbname>] GO sp_changedbowner 'sa'
参考大神链接: