问题描述:
最近正在测试数据库复制,想删除发布服务器的发布数据库时,突然提示这个:
无法作为数据库主体执行,因为主体 “dbo” 不存在、无法模拟这种类型的主体,或您没有所需的权限。已将数据库上下文更改为 “AdventureWorks2008R2”。 (Microsoft SQL Server,错误: 15517)
原因分析:
用附件文件和组的方法的还原数据库,因为新附加的数据库需要设置所有者才能建立数据库关系图,所以才会出现以上情况。引以为戒
解决方案:
解决办法1:
选中数据库实例,右键-属性-文件-查看 实例的所有者是否为空,如果为空,请点击
选中用户即可。
解决方法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