Sql Server中不存在原理dbo

Posted

技术标签:

【中文标题】Sql Server中不存在原理dbo【英文标题】:Principle dbo does not exist in Sql Server 【发布时间】:2016-05-23 07:30:49 【问题描述】:

通过 SQL Server 中的存储过程获取数据时,出现类似错误

无法作为数据库主体执行,因为主体“dbo” 不存在,无法模拟此类主体,或者您 没有权限。

我只在访问特定存储过程时收到此错误,而不是所有 SP。

【问题讨论】:

***.com/questions/13823354/… 的可能重复项 【参考方案1】:

给您的数据库一个有效的所有者。试试这个:

ALTER AUTHORIZATION 
ON DATABASE::[YourDatabaseName]
TO [LoginUser];

或者你可以尝试设置它

USE [dbname]
GO
sp_changedbowner 'someLogin'

【讨论】:

如何提供登录凭证 @Nimmi:- [LoginCredential] 是用户!我会更新它。很抱歉造成混乱。【参考方案2】:
ALTER AUTHORIZATION ON DATABASE::Example TO sa;

【讨论】:

【参考方案3】:

基本上,SQL Server 登录被映射到数据库用户,并且没有为 SQL Server 主体正确定义此映射,那么该特定实例上的数据库的特定用户将无法成功登录,并且该用户称为孤儿用户。 首先,检查孤立用户是否被映射。

USE <database>
EXEC sp_change_users_login @Action='Report';

如果没有映射,则修复孤立用户。

USE <database>
EXEC sp_change_users_login @Action='update_one', @UserNamePattern='YOURUSERNAME', @LoginName='YOURUSERNAME';

【讨论】:

以上是关于Sql Server中不存在原理dbo的主要内容,如果未能解决你的问题,请参考以下文章

如何在SQL Server2005数据库中检查一个表是不是存在,如存在就删除表记录,如不存在就建表.

SQL Server 查询。用户存在于另一个表中但不存在用户的位置

SQL server - 在创建之前检查 SP 中的对象是不是存在

如果 SQL Server 中存在外键约束,如何删除表?

注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL 在 chefspec 中不存在错误

C# Dapper SQL Server 连接错误:连接字符串中不存在 Dapper 连接到另一个数据库