日期:2014-05-17  浏览次数:20490 次

mssql的队列插入和数据池触发插入 是怎么实现的
想对大数据量的业务下优化服务器, 搜了一些资料,
得到的答案是用异步+队列 也有说用数据池的, 但是具体怎么做 我没有找到 
想请教一下具体做法

------解决方案--------------------
sql broker你去搜搜,好像是用这个来实现队列的
------解决方案--------------------
就你发的网址就是了.
你要做的是.建立一个发送队列和接收队列.
在插入的过程
BEGIN DIALOG CONVERSATION @conversationHandle
        FROM SERVICE InitiatorService
        TO SERVICE 'TargetService'
        ON CONTRACT HelloWorldContract
BEGIN DIALOG 开启一个会话
从InitiatorService 发送到 'TargetService'
发送的消息是HelloWorldContract 协议吧
这样返回一个 @conversationHandle句柄
就可以用send 命令发送 HelloWorldContract格式的消息到 目标服务'TargetService'

SEND ON CONVERSATION @conversation_handle
    MESSAGE TYPE HelloWorldMessage
      (@message) ; 

然后可以通过SELECT * FROM [dbo].[TargetQueue]
查询到队列的内容
用RECEIVE 语句,接收队列的信息
RECEIVE
           TOP(1)
           @conversation_handle = conversation_handle,
           @message_type_name = message_type_name,
           @message_body =
           CASE
              WHEN validation = 'X' THEN CAST(message_body AS XML)
              ELSE CAST(N'<none/>' AS XML)
          END
        FROM [dbo].[TargetQueue]
        WHERE conversation_group_id = @conversation_group_id ;
这个接收和处理的过程可以写成一个存储过程设为'TargetService'的处理过程,就可以在队列有信息的时候触发这个存储过程进行处理.