在SQL Azure上授予执行权限

15

我最近将一个数据库迁移到了SQL Azure。当我尝试在SQL Azure上执行该数据库中的存储过程时,我收到以下错误:

The EXECUTE permission was denied on the object 'Log_Save', database 'MyDatabase', schema 'dbo'.

我的问题是,如何在SQL Azure上为存储过程授予执行权限(以及对表的读/写访问权限)?

谢谢!

3个回答

35

关键在于你需要创建一个自定义的"executor"角色并授予其执行权限。

如果您还没有用户,请先在主数据库中创建一个用户:

CREATE USER MyUser FOR LOGIN MyLogin WITH DEFAULT_SCHEMA=[dbo]
GO

然后,在您的新数据库中:

CREATE ROLE [db_executor] AUTHORIZATION [dbo]
GO

GRANT EXECUTE TO [db_executor]
GO

sp_addrolemember @rolename = 'db_executor', @membername = 'MyUser'
sp_addrolemember @rolename = 'db_datareader', @membername = 'MyUser'
sp_addrolemember @rolename = 'db_datawriter', @membername = 'MyUser'

谢谢,这个非常准确!(在我看来也应该是被接受的答案...) - easuter
1
请详细说明为什么这里需要一个“技巧”。当时需要吗?这是假设会有许多用户需要分配到此角色吗? - StingyJack

14

与Joe Abrams的回答相关,您可以向单个用户授予执行权限:

GRANT EXECUTE TO testuser
GO

0

您可以随时使用this工具来管理您的Azure SQL用户并为他们分配正确的权限。


这是一个失效的链接,请更新它。 - Ozzy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接