SQL Server 中的服务代理是啥?

Posted

技术标签:

【中文标题】SQL Server 中的服务代理是啥?【英文标题】:What is Service Broker in SQL Server?SQL Server 中的服务代理是什么? 【发布时间】:2010-05-18 12:36:17 【问题描述】:

什么是 SQL Server 中的 Service Broker,在简单数据库而不是分布式数据库中启用它是否有意义?

【问题讨论】:

blog.sqlauthority.com/2008/07/18/… 【参考方案1】:

SQL Service Broker 是一种扩展机制,允许您将事件排队以进行异步处理。

启用代理没有内在危害。如果不使用,它将只是闲置。

它适用于简单和分布式数据库。一个简单的用例是日志队列。我们在客户端使用它来对要异步处理的 XML 消息进行排队。因此,我们将 XML 推送到 InitatorQueue,然后让服务从队列中拉出它们,通过 XPath 提取一些必要的属性,并将它们插入到数据库中的持久性表中。

Here is a good reference from Microsoft.

【讨论】:

【参考方案2】:

Service Broker 是内置于 SQL Server 数据库引擎中的消息传递系统。 您可以阅读以下文章以了解其工作原理。

Centralized Asynchronous Auditing with Service BrokerCentralized Asynchronous Auditing across Instances and Servers with Service BrokerHow to troubleshoot Service Broker problems

【讨论】:

【参考方案3】:

Service Broker 是一个异步消息传递系统。它允许您将消息发送到队列。然后一些工作进程接收消息。无法保证订单或何时收到消息。但 SQL Server 确实保证消息处理以事务方式进行。

异步消息传递是目前最繁重的架构之一。您应该仔细考虑增加的价值是否值得复杂性。

【讨论】:

实际上 Service Broekr 保证消息按发送顺序接收。 @Mladen Prajdic:对于同一对话中的消息来说确实如此,但并非普遍如此。例如,假设您向 ClientCreator 发送一条 CreateClient 消息,然后向 AddressCreator 发送一条 CreateAddress 消息。第二个可能在第一个完成之前处理。 由于 Service Broker 与 Sql Server 引擎集成,它不需要使用分布式事务,这实际上使其成为最轻量级(因此性能良好)的架构之一。 @Pawel Marciniak:异步编程是一个沉重的架构。同意在异步编程中,Service Broker 是一种相对轻量级的方法

以上是关于SQL Server 中的服务代理是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Snowflake 中的 SQL Server 等效表类型是啥

SQL Server事务日志被填满的原因是啥

如何处理SQL Server事务复制中的大事务操作

SQL 中的 SQL Server Profiler NtUsername 变量是啥?

遍历 SQL Server 中的服务器列表

SQL Server 2008 中的 SQL Server 2008 R2 中的 dm_os_volume_stats 等效项是啥?