2012-04-03 137 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