39

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

USE [MyDatabaseName]
GO

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

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

找不到用户“用户名”,因为它不存在或您没有权限。

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

4

5 回答 5

51

我刚刚遇到了同样的问题。

确保主表中有您的登录名的用户映射。不需要数据库角色成员资格,只需在登录“用户名”的属性中的“用户映射”下为数据库主服务器勾选“映射”。

于 2013-09-16T17:01:30.167 回答
18

运行这个:

USE [db_where_you_need_access]
GO
CREATE USER [your_user] FOR LOGIN [your_user]
于 2016-09-02T17:31:53.480 回答
4

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

于 2014-09-30T15:22:20.267 回答
0

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

这将重新链接孤立的用户:

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

除此之外,如果用户存在并且您拥有相关的安全权限,那么您所做的没有理由不起作用。

于 2013-07-03T06:39:13.077 回答
0

有点愚蠢,但请确保您在声明UserName中的拼写正确。GRANT我花了半个小时试图弄清楚这个错误的原因是什么,这只是我的一个错字!

于 2020-03-23T10:36:59.067 回答