在处理service broker 的时候碰到一个问题,不知道大家有没有遇到过。
在配置好server to server 的消息传输后,消息可以正常发送和接受。 但是在目标服务器上,当我用上Queue激活Procedure的时候,SQLSERVER中应该是后台的队列监视进程会导致cpu 100%。 如果用双核的cpu的话是50%,一旦sqlserver中设置一个cpu的话,那么会导致这个cpu 100%,按道理这个对cpu要求不至于这么高才是。 而且如果我不采用激活的方式 自己用脚本执行循环接收消息的话,并发跑10个都不会有这种问题。

解决方案 »

  1.   

    到微软的 technet 论坛问问。
    http://social.technet.microsoft.com/Forums/en-US/sqlservicebroker/threads
      

  2.   

    service broker 已经大量应用了, 楼主的问题还没有碰到过, 不知道楼主是不是补丁没有打够.不过, Service Broker 到 2008 SP1 都还是不够稳定的, 有时候莫名其妙消息不处理了, ALTER QUEUE一下又好了.反正新东西, 没有问题不正常
      

  3.   

    支持老大。记得老大博客还是新书上有SERVICE BROKER通讯的实例,很不错的。
      

  4.   

    SQL SERVER 2005 SP3 的补丁已经打过了。
    唉,这样的话就不敢用它自带的激活存储过程了。
      

  5.   

    终于搞定了,receive 的sp中多了个 判断queue队列中是否存在message的语句。
    但是还是不太明白为什么会造成这样。
      

  6.   

    哦,原来是这样简单的原因啊.不过.一个判断语句能引起CPU100%?那估计是SQLSERVER的BUG了吧.