标签: service-broker

启用S​​QL Server Broker需要很长时间

我有一个Microsoft SQL Server 2005,我尝试使用这些T-SQL为我的数据库启用Broker:

 SELECT name, is_broker_enabled FROM sys.databases 
 -- checking its status 0 in my case
 ALTER DATABASE myDatabase SET ENABLE_BROKER
Run Code Online (Sandbox Code Playgroud)

Alter Database需要很长的时间来处理.现在已超过半小时,它仍在运行.不确定它是否在等待其他东西或者我必须先清理任何东西,例如删除服务代理下的所有消息,合同,队列和服务?

sql-server-2005 service-broker

129
推荐指数
4
解决办法
12万
查看次数

Message Broker和ESB之间的区别

我在Message Brokers和ESB上经历了不同的问题/文章(甚至在stackoverflow上).仍然不是一个线索,因为消息代理和ESB之间的CLEAR划分区别是什么?现在我在这里尝试比较产品,Websphere Broker和Mule ESB !!

首先,(任何版本)Webshere Broker是ESB吗?我们的IBM产品人员声称它是ESB!(我并不感到惊讶).

我的有限信息告诉我Message Broker在HUB-SPOKE模型上工作.然而,ESB适用于总线架构.那究竟是什么意思呢?我读过如果HUB失败(我猜不到)那么经纪人就完全失败了.这不是ESB的情况(所以那些人说).我在这里不明白的是"如果BUS怎么办"失败?

现在关于ESB和Brokers的常见内容是,它们提供路由,转换,编排等.所以如果它们都提供了这个,那么为什么我会选择一个而不是另一个.

另一个冲突领域是转型.与Message Brokers相比,ESB是否以不同的方式为其提供便利?我真的很喜欢这方面的一些见解.

现在谈论HORIZONTAL缩放.谁比谁更优秀?或者它们在复杂性(或任何其他因素)方面都具有相同的可扩展性.当然,Webshpere Broker会为每个盒子收费(更不用说每个cpu)了.我相信,即使是商业上的MULE ESB也不会这样做.暂且不说它的Cost部分,ESB扩展和Message Broker扩展的含义是什么.我碰巧知道您可以扩展到ESB中的服务级别.这是否可以在Message Broker中使用?

messaging esb service-broker

122
推荐指数
5
解决办法
10万
查看次数

如果目标重新启动,则不会发送Service Broker消息

从高层次来看,这是正在发生的事情:

  1. 我们有两个SQL Server 2008 R2 SP1系统(Windows NT 6.1上的标准版(Build 7601:Service Pack 1)).它们很好地哼唱,双向通信,没有错误或问题.
  2. 我们重启系统#2,期望在它不可用时发送给它的任何Service Broker消息将在系统#1上排队,直到系统#2重新启动.
  3. 系统#2重新启动,一切都正常启动,没有错误.
  4. 在系统#1上为系统#2排队的消息仍然排队等候; 它们永远不会被发送.此外,该对话的新消息也会排队,永远不会发送.
  5. 在新会话上发送的消息传输得很好.

有关从未发送过的消息的详细信息:

A.当系统#2关闭时,队列中消息的transmission_status显示各种错误,表明它无法按预期与系统#2通信.

B.在系统#2重新启动后不久,这些消息的transmit_status变为空白.在此之后,空白状态永远不会改变.

C.消息堆叠的对话处于CONVERSING/CO状态.系统视图中没有列表示与其他正常工作的队列有任何不同.(如果我能找到不同的标志,我会知道终止糟糕的会话,但系统没有提供任何线索 - 除了不断增长的队列深度.)

D.从未在系统#2上收到消息,因为永远不会为这些消息调用我的激活存储过程.

E.在Profiler中(打开所有Broker跟踪类型),一个好的对话显示这些事情被记录:

Broker:Conversation CONVERSING  1 - SEND Message        Initiator                                       
Broker:Message Classify 2 - Remote  Initiator
[SQL Batch complete; SQL that caused the SEND to occur]
Broker:Remote Message Acknowledgement   1 - Message with Acknowledgement Sent   Initiator
Broker:Message Classify     1 - Local   Initiator
Broker:Conversation CONVERSING  6 - Received Sequenced Message  Target
Broker:Remote Message Acknowledgement   3 - Message with Acknowledgement …
Run Code Online (Sandbox Code Playgroud)

sql-server service-broker

35
推荐指数
1
解决办法
2731
查看次数

恢复Sql Server数据库后启用代理

我有启用Service Broker的DataBase.然后我想在程序中从其他数据库的备份恢复我的数据库,但在恢复(我恢复现有数据库名称)后,我的方法,whitch启用Service Broker,放置此错误:

    Msg 9772, Level 16, State 1, Line 1
The Service Broker in database "ServeDB2" cannot be enabled because there is already an enabled Service Broker with the same ID.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.
Run Code Online (Sandbox Code Playgroud)

这是我的方法:

public void TurnOnBroker()
{
    if (!this.database.BrokerEnabled)
    {
        this.server.KillAllProcesses(this.database.Name);
        this.database.BrokerEnabled = true;
        this.database.Alter();
        RefreshConnection();
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该在这里解决什么?有什么建议吗?

sql-server service-broker database-restore sql-server-2008

31
推荐指数
5
解决办法
5万
查看次数

我应该使用MSMQ或SQL Service Broker进行交易吗?

我的团队负责人已经要求我调查MSMQ作为我们产品新版本的选项.我们在当前版本中使用SQL Service Broker.我已经完成了相当多的实验和谷歌搜索,以找到哪个产品更符合我的需求,但我想我会问我最熟悉的网站来编程答案.

一些细节:

  • 我们的客户端是.NET 1.1和2.0代码; 这是消息发送的地方.
  • SQL Server 2005实例中的目标.所有消息最终都是数据库更新或插入.
  • 我们将发送几个必须被视为交易的更新.
  • 我们必须拥有完美的消息可恢复性; 没有消息可以丢失.
  • 即使目标SQL服务器关闭,我们也必须是异步的并且能够接受消息.
  • 开发我们自己的排队解决方案不是一种选择; 我们是一个小团队.

到目前为止我发现的事情:

  • MSMQ和SQL Service Broker都可以完成这项工作.
  • 对于事务性消息来说,服务代理似乎更快.
  • Service Broker需要在某处运行SQL Server,而MSMQ需要在任何地方运行任何已配置的Windows机器.
  • MSMQ似乎更好/更快/更容易在群集中设置/运行.

我错过了什么吗?这里有明显的赢家吗?任何想法,经验或链接都会受到重视.谢谢!

编辑:我们最终坚持使用服务代理,因为我们的一些客户端代码中使用了自定义数据库框架(我们更好地处理事务).该代码捕获了事务的SQL,但没有.客户端代码也是.NET的1.1版本,因此我们必须升级所有客户端代码.谢谢你的帮助!

sql msmq transactions service-broker

25
推荐指数
1
解决办法
2万
查看次数

SQL Server 2008 Service Broker教程 - 无法接收消息(transmission_status中的异常)

我正在学习如何使用SQL Server 2008 R2的Service Broker.在完成单个数据库中的完成对话教程时.在第1课之后,我成功创建了消息类型,合同,队列和服务.在第2课之后,我可能已经发送了这条消息.但是,在尝试接收消息时,我获取的是NULL ReceivedRequestMsg而不是发送的内容.

在查看时sys.transmission_queue,transmission_status消息说:

在目标队列中排队消息时发生异常.错误:15517,状态:1.无法作为数据库主体执行,因为主体"dbo"不存在,此类主体不能被模拟,或者您没有权限.

我已经使用Windows登录安装了SQL Server Mycomp\Petr.我也在使用该登录课程.

你能猜出是什么问题吗?我应该检查和设置什么才能使其正常工作?

编辑2012/07/16:为了帮助重现问题,这就是我所做的.如果您按照下一步操作,是否可以重现错误?

首先,我使用的是Windows 7 Enterprise SP1和Microsoft SQL Server 2008 R2,开发人员版,64位(版本10.50.2500.0,根目录位于C:\ Program Files\Microsoft SQL Server\MSSQL10_50.SQL_PRIKRYL05\MSSQL) .

  1. 按照教程建议,我下载了AdventureWorks2008R2_Data.mdf示例数据库,并将其复制到C:\ Program Files\Microsoft SQL Server\MSSQL10_50.SQL_PRIKRYL05\MSSQL\DATA\AdventureWorks2008R2_Data.mdf

  2. 必须以"管理员"身份启动SQL Server Management Studio才能以后附加数据.然后我连接了SQL Server.

  3. 右键单击Databases,上下文菜单Attach ...,按钮Add ...,指向AdventureWorks2008R2_Data.mdf + OK.然后从下面的网格中选择AdventureWorks2008R2_Log.ldf(报告为未找到)并按下删除...按钮.按OK后,附加了数据库并自动创建了AdventureWorks2008R2_log.LDF.

  4. 以下查询用于查看"Service Broker enabled/disabled",以及启用(Service Broker已成功启用数据库):


USE master;
GO

SELECT name, is_broker_enabled FROM sys.databases;
GO

ALTER DATABASE AdventureWorks2008R2
      SET ENABLE_BROKER
      WITH ROLLBACK IMMEDIATE;
GO

SELECT name, is_broker_enabled FROM …
Run Code Online (Sandbox Code Playgroud)

service-broker sql-server-2008-r2

23
推荐指数
2
解决办法
2万
查看次数

是否有人在SQL Server中使用Service Broker?

当我参加Microsoft的SQL Server 2008演示时,他们快速了解了我们正在使用的功能.事实证明,在整个演讲厅,我的公司是唯一使用Service Broker的公司.这让我感到很惊讶,因为我认为会有更多的人使用它.

我在SB方面的经验是,它的工作做得很好,但管理非常困难,而且很难得到概述.

那么,您考虑过使用Service Broker吗?如果没有,为什么不呢?你有没有去过MSMQ?SQL Server 2008中是否有任何可以让您考虑使用Service Broker的内容.

sql-server sql-server-2005 service-broker sql-server-2008

22
推荐指数
4
解决办法
6276
查看次数

我希望我的数据库(SQL)通知或推送客户端应用程序的更新

我开发这个应用程序VB.net 2010SQL 2008.
我希望通知客户端有关db的更新,以及用于使用计时器检查db在指定分钟内的更改的应用程序,这实际上效率不高.我读到query notification,sqldependency,service broker,但后来我读到的东西,说他们可能不是有效的,如果我有100个客户,我使用查询通知推送通知我的申请.
有人会帮我解决我应该做的事情,以及如何做到这一点(如果可以提供示例,将会非常有用).提前致谢!

sql-server service-broker push-notification sqldependency query-notifications

21
推荐指数
1
解决办法
3万
查看次数

SQL Server Service Broker的缺点

我一直在研究SQL Server Service Broker的范围来替换当前的消息传递解决方案MSMQ.我想知道SQL Server Service Broker的缺点与MSMQ相比,以下标准.

  1. 发展
  2. 故障排除
  3. 性能(假设我们需要每天处理100,000条消息,平均大小约为25 KB)
  4. 可扩展性

sql-server msmq message-queue service-broker

20
推荐指数
1
解决办法
3万
查看次数

你/你应该在.NET应用程序中使用SQL Server Service Broker吗?

我在数据库中有许多需要触发应用程序代码的操作.目前我正在使用数据库轮询,但我听说SQL Server Service Broker可以提供类似MSMQ的功能.

  1. 我可以从在不同计算机上运行的.NET应用程序中侦听SQL Server Service Broker队列吗?
  2. 如果是的话,我应该这样做吗?
  3. 如果没有,你会推荐什么?

.net sql-server message-queue service-broker

19
推荐指数
2
解决办法
2万
查看次数