如何:設定本機服務的權限 (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

SQL Server 會強制設定每個服務的 SEND 權限及每個佇列的 RECEIVE 權限。 擁有起始服務的安全性主體在目標服務上必須具有 SEND 權限。 應用程式的安全性主體必須具有每個佇列的 RECEIVE 權限,以供該應用程式從每個佇列接收訊息。

此程序是建立遠端安全性組態之程序的簡單形式。 在任一情況下,您都必須為傳送訊息的服務授與目的地服務的 SEND 權限以及佇列的 RECEIVE 權限。 不過,對於遠端安全性組態,您還必須設定 Service Broker 安全性以正確識別遠端使用者。 對於單一資料庫內的組態,您只需授與權限。

為本機服務授與權限

  1. 授與使用者從應用程式所使用之佇列進行接收的權限。

  2. 授與擁有起始服務的使用者將訊息傳送至與應用程式通訊之服務的權限。

範例

此範例設定允許 BrokerApplicationUser 將訊息從使用佇列 StoreFrontQueue 的服務傳送至服務 Ordering 的權限。 此程序假設使用者、服務和佇列都已存在。

注意

這些範例已經過 SQL Server 2008 R2 (10.50.x) 的驗證。 建議使用 AdventureWorks 範例資料庫中的 AdventureWorks2008R2 範例資料庫來完成這些範例。

最新版的 SQL Server 支援 SQL Server Service Broker。

    USE AdventureWorks2008R2 ;
    GO

    -- This example sets permissions for a service
    -- program that sends messages to the Ordering service
    -- and receives messages from the StoreFrontQueue queue.

    -- Grant SEND permission on the service to the owner
    -- of the initiating service.
    GRANT SEND ON SERVICE::[Ordering]
    TO [BrokerApplicationUser] ;
    GO

    -- Grant RECEIVE permission on the queue.
    GRANT RECEIVE ON [StoreFrontQueue]
    TO [BrokerApplicationUser] ;
    GO

另請參閱