问题标签 [service-broker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8593 浏览

sql-server - Service Broker:使用 With Cleanup 时,Sys.Conversation_endpoints 会填满 CO/CONVERSING 消息

我们最近发现我们的一个数据库存在问题,由于“触发后忘记”设置(即:发送后立即关闭对话),我们的 sys.conversation_endpoints 表被 DI/DISCONNECTED_INBOUND 消息填满。这最终溢出到 tempDB 中,导致它急剧增长并占用宝贵的磁盘空间。我们最终通过注释掉该行解决了这个问题

END CONVERSATION @handle WITH CLEANUP

在我们的发送 SP 中并使用相同的代码关闭我们接收 SP 中的对话,

END CONVERSATION @handle WITH CLEANUP

但是,我们现在有一个新问题。自从移动服务器(并从 SQL Server 2005 迁移到 SQL Server 2008)以来,我们最近发现 sys.conversation_endpoints 现在充满了 CO/CONVERSING 消息,表明对话没有关闭。接收 SP 正在关闭它们,或者至少正在运行命令来这样做,所以我不明白这些消息来自哪里。

我尝试在发送时返回结束对话,但没有任何效果。使用 结束接收端的对话是错误的WITH CLEANUP吗?还是有其他问题?

techtarget 上的这篇文章似乎暗示它是一个错误,并且运行清理剩余物的工作是唯一的解决方案......

更新:Pawel 在下面指出,我应该避免使用 Fire & Forget 模式,并且我已将激活的 SP 添加到发起程序队列以结束任何对话。但是,sys.conversation_endpoints 仍然被填满,这次是 CD/CLOSED 消息。这是我的队列的结构

发送_SP:

Receive_SP(TargetQueue 上激活的 SP)

End_SP(在 InitiatorQueue 上激活的 SP)

0 投票
5 回答
58486 浏览

sql-server - Enabling broker after Restoring Sql Server DataBase

I have DataBase with enabled Service Broker. Then I want to restore my database in program from backup of other database, but after restoring(I restore on existing database name), my method, whitch enables Service Broker, puts this error:

This is my method:

What should i fix here?Any suggestions?

0 投票
1 回答
1638 浏览

sql-server - 如何更改队列/服务的目标服务名称

我有一个 SQL Server 2005 Service Broker 队列“ProductChangeMes​​sages”和一个 Service Broker 服务“ProductChangeNotifications”。这对是SqlDependency我试图开始工作的支持,但依赖项的 OnChanged 不会触发。当被监视的表发生变化时,订阅(通过 的结果可见select * from sys.dm_qn_subscriptions)被删除。

显示的队列中有消息,SELECT * FROM sys.transmission_queue它们的队列名称为它们to_service_name,并且transmission_status它们具有

找不到目标服务名称。确保正确指定了服务名称和/或已提供路由信息。

因此,似乎生成消息的任何东西都在尝试使用队列名称而不是服务名称作为to_service_name.

如何更改它以使其使用正确的服务名称?

0 投票
1 回答
3709 浏览

sql-server-express - 将 Service Broker 与 Sql Server Express 2008 一起使用

是否可以在不通过 sql 企业/标准的情况下在 sql express 上使用外部激活?

我想向 sql express 服务代理发送一条消息,然后让它通知我在同一个盒子上运行的外部应用程序服务,以便启动控制台应用程序来获取消息并处理它。我已经从远程 Sql Enterprise 数据库成功地做到了这一点。

但是现在我需要将所有东西都包含在一个带有 Sql express 的盒子里,而无需使用远程 Sql Enterprise。

但是 sql express 有局限性,所以我想知道是否可以按照独立配置中的描述使用 sql express,而无需通过 Sql Enterprise。谢谢你的帮助!

0 投票
1 回答
269 浏览

sql-server - 我可以确保 sql 服务代理中对话的顺序吗?

所以,我有一个“A”服务器和一个“B”服务器。我们正在使用 SQL Service Broker 来执行复制。我们拥有的应用程序需要将数据写入“A”服务器或“B”服务器。(一个可能会宕机,另一个应该接管)

数据仅在存储过程中写入数据库,这些存储过程包装在事务中以保持表中的数据一致。

这些事务之一将包括要发送到对等服务器的所有消息。因此,在我的应用程序代码中,当我尝试提交事务时,它应该将所有数据写入表,并将消息发送到对等服务器。

但是,如果对等服务器关闭,则消息将在 sys.transmission_queue 中等待。

对话对话中的消息顺序得到保证,但我能否确保对话对话将按照我创建它们的顺序进行处理?

例如,如果“B”服务器关闭,我可能会遇到问题,A 用户将数据写入“A”服务器。一旦“B”服务器再次备份,如果这些对话对话被乱序处理,它们可能无法正常工作。(他们可能会尝试使用错误的外键或类似的东西插入数据)。

我在以下假设下工作:

  1. 我应该为每笔交易进行一次对话。

  2. 解决方案的形式必须是通过sql service broker进行复制。(这是在数据库的其他部分完成的,因此使用替代策略的任何理由都必须令人信服)。

0 投票
1 回答
1795 浏览

.net - 使用 SQLDependency/SqlNotificationRequest 让同一应用程序的多个实例接收相同的通知?

我最近开始研究这个问题,但我知道 ASP.NET缓存可能会在表(或查询结果)更改时以某种方式使用SqlCacheDependency使缓存无效。这将我引向 SQLDependencySqlNotificationRequest类。虽然SqlNotificationRequest类的细节仍然让我难以理解,但我确实设法了解了一些关于SQLDependency类的知识。Start方法需要更大的权限,然后我才能给用户我的进程将连接到数据库,所以我做了一些研究并成功创建了一个队列服务代理我的测试应用程序可以用来获取通知。

我的问题是,如果我运行我的测试应用程序的多个实例,它就不起作用。我在这里和那里看到了一些提示,听起来好像我需要一个设置(队列服务代理等)每个实例才能工作,这听起来很混乱且无法维护。

任何人都可以确认是这种情况,或者甚至可以提出一些替代解决方案吗?

此外,我们正在运行 SQL Server 2005。

0 投票
1 回答
642 浏览

.net - 从 CLR 存储过程接收 Service Broker

我正在尝试将此 T-SQL 存储过程移动到 CLR 过程,但是有一个我不知道如何实现的 Service Broker 特定命令:

你知道如何在 .net 上做同样的事情吗?

谢谢!

0 投票
1 回答
4168 浏览

wcf - MSMQ 与 SQL Server 服务代理

我有一个由三部分组成的应用程序:

  • 面向最终用户和业务合作伙伴的前端网上商店
  • 处理这些订单的订单管理系统
  • 一个技术数据库系统,用于处理订购的这些产品和服务的所有技术细节

如今,这些系统(位于不同的服务器上并由不同的团队开发)使用 WCF Web 服务进行互操作。

此设置工作正常 - 只要所有服务器都已启动。他们不是——无论如何,并非总是如此。

因此,我开始考虑使用 MSMQ 或 SQL Server Service Broker 来处理这些系统之间的通信——至少在将订单存储到订单管理系统中的网店或发送技术数据的订单管理系统时到技术数据库系统。

我希望在整个系统中实现更高的可靠性——即使订单管理后端暂时不可用,用户仍然可以下订单并且不会丢失。

但最大的问题是:MSMQ 还是服务代理??这三个系统都基于 Windows 和 .NET,并且已经在三个独立的服务器上使用 SQL Server。

有没有人有一些确凿的、真实的事实来支持(或反对)这两种技术中的一种?您对这两组技术的真实体验是什么?优点和缺点。如果你可以从头开始——你会选择哪一个?还是您会完全选择其他东西(什么?)?

0 投票
1 回答
292 浏览

sql-server - Service Broker 中的单一对话

我将在我的 SQL Server 2008 上进行异步审计,如下所示:http: //auoracle.blogspot.com/2010/02/service-broker-master-audit-database.html

它的作用是:

  • 触发器将消息发送到服务代理中的队列
  • 另一个数据库中的另一个 SP 接收消息并处理它们

我看到的可能问题是它使用单个对话按顺序发送所有消息,这是一个要求。

我只是有点担心它使用单个对话的事实,我想这不是常见的用法。你知道这样做有什么问题吗?

谢谢!

0 投票
1 回答
1055 浏览

sql - 从 Service Broker 激活时存储过程缓慢

我编写了一个从 Management Studio 执行时需要15 分钟的存储过程。但是,当它从 Service Broker 激活时,4 小时后它甚至还没有完成一半的工作。

从 Service Broker 运行 SP 时是否存在已知的性能问题?(也许 Service Broker 在事务中运行 SP 而 Management Studio 没有?)

我正在使用 SQL Server 2005。

更新:

看来问题是从另一个存储过程执行存储过程。更具体地说,我有一个接收操作(导出或删除)的存储过程。然后这个SP根据操作调用各自的SP(一个有ETL过程,另一个删除数据)。在这些 SP 上强制重新编译似乎已经解决了这个问题。我想知道 SQL Server 是否应该为每个子 SP 制定一个行动计划,独立于调用它们的 SP。在这种情况下,不需要重新编译。