如何为本地服务配置权限 (Transact-SQL)

适用于SQL Server Azure 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

另请参阅