Sql Server中不存在原理dbo

时间:2016-05-23 07:30:50

标签: sql sql-server sql-server-2012

通过SQL Server中的存储过程获取数据时,我收到类似

的错误
  

无法作为数据库主体执行,因为主体“dbo”   不存在,这种类型的委托人不能被冒充,或者你   没有许可。

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

3 个答案:

答案 0 :(得分:8)

为您的数据库提供有效的所有者。试试这个:

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

或者您可以尝试将其设置为

USE [dbname]
GO
sp_changedbowner 'someLogin'

答案 1 :(得分:1)

ALTER AUTHORIZATION ON DATABASE::Example TO sa;

答案 2 :(得分:0)

基本上,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';