在SQL Azure上授予执行权限

时间:2012-04-03 11:36:53

标签: azure-sql-database

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

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

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

谢谢你!

3 个答案:

答案 0 :(得分:13)

诀窍是你必须创建一个自定义的“执行者”角色,然后授予它执行权限。

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

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'

答案 1 :(得分:3)

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

GRANT EXECUTE TO testuser
GO

答案 2 :(得分:1)

您始终可以使用this工具来管理Azure SQL用户并为他们提供正确的权限。