我最近将数据库迁移到SQL Azure。当我尝试在SQL Azure的这个数据库上执行存储过程,我收到以下错误:授予SQL Azure上的执行权限
The EXECUTE permission was denied on the object 'Log_Save', database 'MyDatabase', schema 'dbo'.
我的问题是,我该如何授予EXECUTE权限存储过程(以及读/写访问表)在SQL Azure上?
谢谢!
我最近将数据库迁移到SQL Azure。当我尝试在SQL Azure的这个数据库上执行存储过程,我收到以下错误:授予SQL Azure上的执行权限
The EXECUTE permission was denied on the object 'Log_Save', database 'MyDatabase', schema 'dbo'.
我的问题是,我该如何授予EXECUTE权限存储过程(以及读/写访问表)在SQL Azure上?
谢谢!
诀窍是你必须创建一个自定义的“执行者”角色,然后授予执行权限。
在你的主数据库,如果你没有一个已经先创建一个用户:
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'
您可以随时使用this工具管理您的Azure SQL用户并授予他们正确的权限。
相关的乔·艾布拉姆斯的回答,您可以授予执行权限给单个用户:
GRANT EXECUTE TO testuser
GO
谢谢,这是正确的金钱! (也应该是接受的答案恕我直言......) – easuter 2016-02-15 13:35:38