无法作为数据库主体执行,因为主体 “dbo“ 不存在、无法模拟这种类型的主体,或您没有所需的权限

问题描述:

最近正在测试数据库复制,想删除发布服务器的发布数据库时,突然提示这个:
删除发布
无法作为数据库主体执行,因为主体 “dbo” 不存在、无法模拟这种类型的主体,或您没有所需的权限。已将数据库上下文更改为 “AdventureWorks2008R2”。 (Microsoft SQL Server,错误: 15517)


原因分析:

用附件文件和组的方法的还原数据库,因为新附加的数据库需要设置所有者才能建立数据库关系图,所以才会出现以上情况。引以为戒


解决方案:

解决办法1:

选中数据库实例,右键-属性-文件-查看 实例的所有者是否为空,如果为空,请点击
选中用户即可。

无法作为数据库主体执行,因为主体 “dbo“ 不存在、无法模拟这种类型的主体,或您没有所需的权限
无法作为数据库主体执行,因为主体 “dbo“ 不存在、无法模拟这种类型的主体,或您没有所需的权限

解决方法2:

运行一下代码检查数据库的归属权:

select owner_sid ,lo.sid, lo.name, lo.loginname ,db_name(database_id) 
from master.sys.databases da 
inner join  sys.syslogins lo on  da.owner_sid = lo.sid

PS:以上代码可直接执行,不更改任何内容.运行结果如下:
在这里插入图片描述
更改所有者为sa 或当前账号:

USE AdventureWorks2008R2; --数据库名称
EXEC sp_changedbowner 'sa'; --数据库系统管理员

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/7266

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年2月17日 下午4:01
下一篇 2023年2月18日 下午1:57

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信