|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用一个库#bak_database存放这些历史数据。server|散布式关于SQLServer2000和SQLServer2005散布式事件可否协同事情的测试
MSDTCReport
1.MSDTC背景
2.MSDTC测试目标
3.MSDTC测试情况
3.1本次考证测试情况:
3.2情况设置
3.3考证MSDTC
3.4创立考证用表
4.LinkedServer测试
5.结论
1.MSDTC背景
掌管娶亲仪式的牧师先问新娘和新郎“乐意这人成为您的夫妇吗?”假如他们都回覆“乐意”,牧师就会公布他们娶亲。
这个情形申明了事件的基础道理:几个自力的实体必需告竣分歧。假如任何一方分歧意,买卖就会失利。一旦批准后,事件就会产生。MicrosoftDistributedTransactionCoordinator(MS?DTC)为COM布局的别的组件实行这项事件和谐义务。在MSDTC,实行者被称为事件办理器。在实行事件回护资本的事件中,其介入者(如干系数据库)被称为资本办理器。
使用程序经由过程挪用事件办理器的BeginDistributedTransaction办法入手下手事件。如许可创立一个代表事件的事件工具。然后使用程序会挪用资本办理器来完成事件事情。当某个资本办理器起首代表某个事件事情时,会经由过程挪用事件办理器“挂号”到该事件中。跟着事件的开展,事件办理器会跟踪每一个挂号到该事件中的资本办理器。当使用程序乐成地完成事件的事情后,它会挪用MSDTC来“提交”事件。然后MSDTC会细心反省“两阶段”“提交协定”,使一切已挂号的资本办理器都提交。两阶段提交协定可确保一切的资本办理器提交此事件,或全都保持此事件。在第一阶段,MSDTC扣问每一个资本办理器是不是“筹办”提交。假如一切介入者都回覆“是”,那末在第二阶段MSDTC将向一切介入者播送提交信息。假如事件的任何部分失利,或资本办理器呼应筹办哀求失利,或资本办理器呼应“否”,。则挪用Abort事件办法,该办法能够取消事件的操纵
2.MSDTC测试目标
经由过程举行SQLServer2005和本机SQLServer2000实例间及和别的自力SQLServer2000盘算机的散布式事件的测试来考证SQLServer分歧版本间散布式事件的兼容性及可行性。
3.MSDTC测试情况
3.1本次考证测试情况:
?一台真实的盘算机(SQLServer2000)
?一台假造机(装有SQLServer2000默许实例及SQLServer2005定名实例)
?测试工具:DTCTest&DTCPing
3.2情况设置
1.封闭两台盘算机的防火墙
2.翻开SQLServer2005服务器真个TCP监听
3.翻开SQLServer2005远程毗连
4.以下设置MSDTC
3.3考证MSDTC
起首利用DTCTest来考证两台盘算机DTC是否是事情一般,在两台盘算机上各建一个ODBCDatasource,在命令行下运转DTCTEST
确认MSDTC事情一般
3.4创立考证用表
1.在SQLServer2005的AdventureWorks数据库中利用以下剧本创立表,此表用于今后的MSDTC的拔出,删除,变动及查询测试:
CREATETABLEDBO.TEST2005
(
ID1INTIDENTITY(1,1),
DESVARCHAR(100)
)
2.在SQLServer2000的Pubs数据库中利用以下剧本创立表,此表用于今后的MSDTC的拔出,删除,变动及查询测试:
CREATETABLEDBO.TEST2000
(
ID1INTIDENTITY(1,1),
DESVARCHAR(100)
)
4.LinkedServer测试
4.1SQLServer2005中到场SQLServer2000链接服务器,并举行响应的测试
在SQlServer2005中,利用导游大概以下剧本来创立一个LinkedServer,使此LinkedServer指向SQLServer2000数据库misdbs01
/******Object:LinkedServer[MISDBS01]ScriptDate:10/27/200517:39:33******/
EXECmaster.dbo.sp_addlinkedserver@server=NMISDBS01,@srvproduct=NSQLServer
GO
EXECmaster.dbo.sp_serveroption@server=NMISDBS01,@optname=Ncollationcompatible,@optvalue=Nfalse
GO
EXECmaster.dbo.sp_serveroption@server=NMISDBS01,@optname=Ndataaccess,@optvalue=Ntrue
GO
EXECmaster.dbo.sp_serveroption@server=NMISDBS01,@optname=Ndist,@optvalue=Nfalse
GO
EXECmaster.dbo.sp_serveroption@server=NMISDBS01,@optname=Npub,@optvalue=Nfalse
GO
EXECmaster.dbo.sp_serveroption@server=NMISDBS01,@optname=Nrpc,@optvalue=Nfalse
GO
EXECmaster.dbo.sp_serveroption@server=NMISDBS01,@optname=Nrpcout,@optvalue=Nfalse
GO
EXECmaster.dbo.sp_serveroption@server=NMISDBS01,@optname=Nsub,@optvalue=Nfalse
GO
EXECmaster.dbo.sp_serveroption@server=NMISDBS01,@optname=Nconnecttimeout,@optvalue=N0
GO
EXECmaster.dbo.sp_serveroption@server=NMISDBS01,@optname=Ncollationname,@optvalue=null
GO
EXECmaster.dbo.sp_serveroption@server=NMISDBS01,@optname=Nlazyschemavalidation,@optvalue=Nfalse
GO
EXECmaster.dbo.sp_serveroption@server=NMISDBS01,@optname=Nquerytimeout,@optvalue=N0
GO
EXECmaster.dbo.sp_serveroption@server=NMISDBS01,@optname=Nuseremotecollation,@optvalue=Ntrue
在SQLServer2005中睁开工具扫瞄器到LinkedServer目次下,能够看到已有一个叫misdbs01的linkedserver存在,上面对此linkedserver举行考证。考证步骤将分离用SELECT,DELETE,UPDATE,INSERT来对SQLServer2000中PUBS数据库下的test2000举行响应操纵。
/******
RETRIVEDATAFROMREMOTESERVER
******/
BEGINDISTRIBUTEDTRAN
SELECT*FROMMISDBS01.PUBS.DBO.TEST2000
COMMITTRAN
/******
INSERTDATATOREMOTESERVER
******/
SETXACT_ABORTON
BEGINDISTRIBUTEDTRAN
INSERTMISDBS01.PUBS.DBO.TEST2000(DES)
SELECTA
COMMITTRAN
/******
DELETEREMOTESERVERSDATA
******/
SETXACT_ABORTON
BEGINDISTRIBUTEDTRAN
DELETEFROMMISDBS01.PUBS.DBO.TEST2000
COMMITTRAN
/******
UPDATEREMOTESERVERSDATA
******/
SETXACT_ABORTON
BEGINDISTRIBUTEDTRAN
UPDATEMISDBS01.PUBS.DBO.TEST2000
SETDES=B
COMMITTRAN
同理考证YUKONDW毗连当地的SQLServer2000默许实例,也是乐成的。
下面的测试全体一般事情,因而可知测试可见MSDTC是可以一般事情的,从LinkedServer的创立剧本中我们也能够发明实在SQLServer2005中利用的SQLNativeClientprovider来毗连SQLServer2000的,参照MSDN中的以下形貌,我们能够晓得可以一般乐成是一般的:
ThefollowingtableshowstheOLEDBprovidersthathavebeentestedwithSQLServerdistributedqueries.AlltheseproviderssupportbeingreferencedinaSELECTstatementbyspecifyingapass-throughqueryintheOPENQUERYandOPENROWSETfunctions.
DatasourceProvidernameUseinfour-partnamesUseinpass-throughqueriesandcommandsUseinINSERT,UPDATE,orDELETEUseindistributedtransactionsSQLServer7.0orlaterMicrosoftSQLNativeClientOLEDBProviderYesYesYesYes
4.2SQLServer2000中到场SQLServer2005链接服务器,并举行响应的测试先在SQLServer2000企业办理器大概间接利用T-SQL语句新增添一个LinkedServer,此LinkedServer指向SQLServer2005.在SQLServer2000中睁开工具扫瞄器到LinkedServer目次下,能够看到已有一个叫YUKONDW的linkedserver存在,上面对此linkedserver举行考证。考证步骤将分离用SELECT,DELETE,UPDATE,INSERT来对SQLServer2005中AdventureWorks数据库下的test2005举行响应操纵。/******RETRIVEDATAFROMREMOTESERVER******/BEGINDISTRIBUTEDTRANSELECT*FROM[YUKONDW].ADVENTUREWORKS.DBO.TEST2005COMMITTRAN/******INSERTDATATOREMOTESERVER******/SETXACT_ABORTONBEGINDISTRIBUTEDTRANINSERT[YUKONDW].ADVENTUREWORKS.DBO.TEST2005(DES)SELECTACOMMITTRAN/******DELETEREMOTESERVERSDATA******/SETXACT_ABORTONBEGINDISTRIBUTEDTRANDELETEFROM[YUKONDW].ADVENTUREWORKS.DBO.TEST2005COMMITTRAN/******UPDATEREMOTESERVERSDATA******/SETXACT_ABORTONBEGINDISTRIBUTEDTRANUPDATE[YUKONDW].ADVENTUREWORKS.DBO.TEST2005SETDES=’B’COMMITTRAN由下面的测试能够看出由本机SQLServer2000毗连链接到SQLServer2005的历程也是乐成的,实在如今是利用的SQLOLEDB来举行连接的。同理考证由别的盘算的SQLServer2000毗连链接到此SQLServer2005实例,经由考证,也是能够一般事情的,可见SQLServer2005仍然在这方面撑持SQLServer2000的Provider.4.结论可见SQLServer2000和SQLServer2005间分歧版本间的散布式事件可以协同事情。
这里我们讨论用binlog来实现闪回的方案。 |
|