資源描述:
《sqlserver實(shí)戰(zhàn)經(jīng)驗(yàn)分享》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、SQLServer實(shí)戰(zhàn)經(jīng)驗(yàn)分享 在平常的項(xiàng)目設(shè)計(jì)中,我們經(jīng)常會用到各種各樣的隊(duì)列來實(shí)現(xiàn)分布式系統(tǒng)的異步調(diào)用邏輯和數(shù)據(jù)消息的傳遞,從而來達(dá)到增強(qiáng)應(yīng)用程序的性能和可伸縮性,通過事務(wù)性隊(duì)列的離線消息處理機(jī)制更可以大大提高系統(tǒng)的可靠性。SQLServer自2005以后版本便增加了一個(gè)新的內(nèi)置隊(duì)列處理應(yīng)用模塊ServiceBroker,此功能模塊大大簡化了隊(duì)列的使用操作,更方便的是能和原先的SQLServer系統(tǒng)在事務(wù)處理上完美的結(jié)合在一起。可是唯一的缺陷是增加了設(shè)計(jì)的耦合性?! 〗酉聛砦覀兙腿绾问褂肧erviceBroker來做一個(gè)場景描述。我們需要設(shè)計(jì)一個(gè)SDN文檔): 1
2、.實(shí)現(xiàn)ServiceBroker消息、隊(duì)列和服務(wù) 公共部分 定義消息類型架構(gòu)集合 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); 初始方 定義隊(duì)列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 目標(biāo)方 定義隊(duì)列處理存儲過程CREATEPROCEDUREdbo.usp
6、_msgOperation_CMDAS RETURN0GO 定義隊(duì)列CREATEQUEUEmsgOperationProcessQueueE=dbo.usp_msgOperation_CMD, MAX_QUEUE_READERS=1, EXECUTEASSELF); 實(shí)現(xiàn)隊(duì)列處理存儲過程ALTERPROCEDUREdbo.usp_msgOperation_CMDASdeclaremessage_bodyasxml;declaremessage_typeassysname;declaredialogasuniqueidentifier;dbo.msgOperati
7、onProcessQueue ),TIMEOUT2000 --如果沒收到任何消息則跳出循環(huán) IF(ROITTRANSACTION ENDGO 實(shí)現(xiàn)目標(biāo)處理服務(wù)CREATESERVICE[Samples/SQL/ServiceBroker/msgOperationProcessService]ONQUEUEdbo.msgOperationProcessQueue([Samples/SQL/ServiceBroker/msgOperationContract])GO 2.實(shí)現(xiàn)ServiceBroker安全配