无法找到用户'',因为它不存在或您没有权限

时间:2013-04-16 15:06:41

标签: sql-server tsql sql-server-2005 stored-procedures

我正在尝试为使用此查询的用户添加Store过程的权限,

USE [MyDatabaseName]
GO

GRANT EXEC ON [dbo].[StoreProcedureName] TO [UserName]
GO

我可以通过用户界面向用户授予权限但是使用此查询我收到此错误,

  

无法找到用户'UserName',因为它不存在或您没有   权限。

如果我没有权限,那么如何使用用户界面添加权限。

5 个答案:

答案 0 :(得分:38)

我刚遇到同样的问题。

确保在主表中有登录用户映射。不需要数据库角色成员资格,只需在登录'UserName'的属性中的'User Mapping'下勾选数据库主数据'Map'。

答案 1 :(得分:9)

运行:

USE [db_where_you_need_access]
GO
CREATE USER [your_user] FOR LOGIN [your_user]

答案 2 :(得分:3)

我遇到了这个问题,但我在服务器上的本地管理员组中。显然,如果UAC打开运行SQL Server Management Studio作为管理员会让世界变得不同。在我这样做之前,我没有任何权限。

答案 3 :(得分:0)

当从另一台服务器恢复数据库并且数据库中用户的GUID与当前服务器的GUID不同时,您可能会遇到这样的问题。

这将重新链接孤立用户:

USE <database_name>;
GO
sp_change_users_login @Action='update_one', @UserNamePattern='<database_user>', 
   @LoginName='<login_name>';
GO

除此之外,如果用户存在并且您拥有相关的安全权限,那么您没有理由不采取行动。

答案 4 :(得分:0)

有些愚蠢,但是请确保UserName语句中的GRANT拼写正确。我花了半个小时试图找出导致此错误的原因,而这只是我的错字!