愤怒的大鸟 发表于 2015-1-16 22:22:12

MSSQL网站制作之关于SQL Server 2000和SQL Server 2005...

用一个库#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:LinkedServerScriptDate: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.ADVENTUREWORKS.DBO.TEST2005COMMITTRAN/******INSERTDATATOREMOTESERVER******/SETXACT_ABORTONBEGINDISTRIBUTEDTRANINSERT.ADVENTUREWORKS.DBO.TEST2005(DES)SELECTACOMMITTRAN/******DELETEREMOTESERVERSDATA******/SETXACT_ABORTONBEGINDISTRIBUTEDTRANDELETEFROM.ADVENTUREWORKS.DBO.TEST2005COMMITTRAN/******UPDATEREMOTESERVERSDATA******/SETXACT_ABORTONBEGINDISTRIBUTEDTRANUPDATE.ADVENTUREWORKS.DBO.TEST2005SETDES=’B’COMMITTRAN由下面的测试能够看出由本机SQLServer2000毗连链接到SQLServer2005的历程也是乐成的,实在如今是利用的SQLOLEDB来举行连接的。同理考证由别的盘算的SQLServer2000毗连链接到此SQLServer2005实例,经由考证,也是能够一般事情的,可见SQLServer2005仍然在这方面撑持SQLServer2000的Provider.4.结论可见SQLServer2000和SQLServer2005间分歧版本间的散布式事件可以协同事情。

这里我们讨论用binlog来实现闪回的方案。

不帅 发表于 2015-1-19 09:36:04

是要和操作系统进行Socket通讯的场景。否则建议慎重!

admin 发表于 2015-1-26 15:20:49

我个人认为就是孜孜不懈的学习

第二个灵魂 发表于 2015-2-4 19:53:12

多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油

再现理想 发表于 2015-2-10 05:57:30

如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。

飘飘悠悠 发表于 2015-2-28 22:28:58

对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。

简单生活 发表于 2015-3-10 09:08:03

原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。

若相依 发表于 2015-3-17 06:11:31

同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。

因胸联盟 发表于 2015-3-23 23:39:53

也可谈一下你是怎么优化存储过程的?
页: [1]
查看完整版本: MSSQL网站制作之关于SQL Server 2000和SQL Server 2005...