資源描述:
《sqlserver實戰(zhàn)經驗分享》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。
1、SQLServer實戰(zhàn)經驗分享 在平常的項目設計中,我們經常會用到各種各樣的隊列來實現(xiàn)分布式系統(tǒng)的異步調用邏輯和數(shù)據(jù)消息的傳遞,從而來達到增強應用程序的性能和可伸縮性,通過事務性隊列的離線消息處理機制更可以大大提高系統(tǒng)的可靠性。SQLServer自2005以后版本便增加了一個新的內置隊列處理應用模塊ServiceBroker,此功能模塊大大簡化了隊列的使用操作,更方便的是能和原先的SQLServer系統(tǒng)在事務處理上完美的結合在一起??墒俏ㄒ坏娜毕菔窃黾恿嗽O計的耦合性?! 〗酉聛砦覀兙腿绾问褂肧erviceBroker來做一個場景描述。我們需要設計一個SDN文檔): 1
2、.實現(xiàn)ServiceBroker消息、隊列和服務 公共部分 定義消息類型架構集合 CREATEXMLSCHEMACOLLECTION[Samples/SQL/ServiceBroker/msgOperationSchema]ASN'<?xmlversion=1.0?><xs:schemaxmlns:xs=.a> <xs:elementname=msgOperation> <xs:plexType> <xs:sequence> <xs:elementname=msgIdtype=xs:
3、int/> <xs:elementname=msgContenttype=xs:string/> </xs:sequence> </xs:plexType> </xs:element></xs:schema>'; 定義消息類型CREATEMESSAGETYPE[Samples/SQL/ServiceBroker/msgOperation]VALIDATION=VALID_XMLACOLLECTION[Samples/SQL/ServiceBroker/msgOperationSchem
4、a]; 定義消息契約 CREATECONTRACT[Samples/SQL/ServiceBroker/msgOperationContract]( [Samples/SQL/ServiceBroker/msgOperation] SENTBYINITIATOR); 初始方 定義隊列CREATEQUEUEmsgOperationInitQueueSERVICE[Samples/SQL/ServiceBroker/msgOperationInitService] TOSERVICE'Samples/SQL/ServiceBroker/msgOpera
5、tionProcessService' ONCONTRACT[Samples/SQL/ServiceBroker/msgOperationContract]; --E=3600; --發(fā)送消息 SENDONCONVERSATIONdialog MESSAGETYPE[Samples/SQL/ServiceBroker/msgO1234下一頁>>>>這篇文章來自..,。peration](message_body); ENDCONVERSATIONdialog;GO 目標方 定義隊列處理存儲過程CREATEPROCEDUREdbo.usp
6、_msgOperation_CMDAS RETURN0GO 定義隊列CREATEQUEUEmsgOperationProcessQueueE=dbo.usp_msgOperation_CMD, MAX_QUEUE_READERS=1, EXECUTEASSELF); 實現(xiàn)隊列處理存儲過程ALTERPROCEDUREdbo.usp_msgOperation_CMDASdeclaremessage_bodyasxml;declaremessage_typeassysname;declaredialogasuniqueidentifier;dbo.msgOperati
7、onProcessQueue ),TIMEOUT2000 --如果沒收到任何消息則跳出循環(huán) IF(ROITTRANSACTION ENDGO 實現(xiàn)目標處理服務CREATESERVICE[Samples/SQL/ServiceBroker/msgOperationProcessService]ONQUEUEdbo.msgOperationProcessQueue([Samples/SQL/ServiceBroker/msgOperationContract])GO 2.實現(xiàn)ServiceBroker安全配