我正在尝试为使用此查询的用户添加Store过程的权限,
USE [MyDatabaseName]
GO
GRANT EXEC ON [dbo].[StoreProcedureName] TO [UserName]
GO
我可以通过用户界面向用户授予权限但是使用此查询我收到此错误,
无法找到用户'UserName',因为它不存在或您没有 权限。
如果我没有权限,那么如何使用用户界面添加权限。
答案 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
拼写正确。我花了半个小时试图找出导致此错误的原因,而这只是我的错字!