2012-04-03 122 views
3

我最近将数据库迁移到SQL Azure。当我尝试在SQL Azure的这个数据库上执行存储过程,我收到以下错误:授予SQL Azure上的执行权限

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

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

谢谢!

回答

10

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

在你的主数据库,如果你没有一个已经先创建一个用户:

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

然后,在新的DB:

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' 
+0

谢谢,这是正确的金钱! (也应该是接受的答案恕我直言......) – easuter 2016-02-15 13:35:38

1

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

1

相关的乔·艾布拉姆斯的回答,您可以授予执行权限给单个用户:

GRANT EXECUTE TO testuser 
GO