SQL Server数据库Owner导致事件复制log reader job无法启动的解决办法 ...

打印 上一主题 下一主题

主题 1816|帖子 1816|积分 5452

问题场景

SQL Server事件复制在正常创建发布和订阅之后,log reader Job 启动异常,出现“The process could not execute ‘sp_replcmds’ on xxx”等异常日记导致署理服务无法正常启动。
 
异常现象

参考下图,异常日记如下

Error messages:

  • The process could not execute ‘sp_replcmds’ on xxx.
  • 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.
  • The process could not execute ‘sp_replcmds’ on xxx. 
异常原因

这种常见错误发生于数据库是被从其他备份还原过来的,数据库的owner通常是一个域账号(服务账号)且该账号不存在与当前数据库实例中,亦或者还原数据库的域账号失效(密码变动),导致数据库没有有效的owner,或者SQL Server无法正确识别数据库的全部者。
解决方案

1,通过脚本修改数据库的owner为sa或者本地的一个sysadmin的账号
  1. USE PublishedDatabase
  2. GO
  3. --检查数据库的owner
  4. select name, suser_sname(owner_sid)from sys.databases;
  5. GO
  6. EXEC sp_changedbowner 'sa'
  7. GO
复制代码
 
2,通过SSMS图形界面修改

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表