通过SQL Server中的存储过程获取数据时,我收到类似
的错误无法作为数据库主体执行,因为主体“dbo” 不存在,这种类型的委托人不能被冒充,或者你 没有许可。
我仅在访问特定存储过程时收到此错误,而不是所有SP的错误。
答案 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';