国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

關于SQL Server 2000和SQL Server 2005分布式事務能否協同工作的測試

2024-08-31 00:49:22
字體:
來源:轉載
供稿:網友
中國最大的web開發資源網站及技術社區,

關于sql server 2000和sql server 2005分布式事務能否協同工作的測試
ms dtc report

1.      ms dtc 背景

2.      msdtc 測試目的

3.      msdtc 測試環境

3.1            本次驗證測試環境:

3.2            環境配置

3.3            驗證msdtc

3.4            創建驗證用表

4.      linked server測試

5.      結論

 

 

1.        ms dtc 背景

主持結婚典禮的牧師先問新娘和新郎“愿意此人成為您的配偶嗎?” 如果他們都回答“愿意”,牧師就會宣布他們結婚。

這個情景說明了事務的基本原理:幾個獨立的實體必須達成一致。如果任何一方不同意,交易就會失敗。一旦同意后,事務就會發生。microsoft distributed transaction coordinator (ms? dtc) 為 com 結構的其它組件執行這項事務協調任務。在ms dtc,執行者被稱為事務管理器。在執行事務保護資源的事務中,其參與者(如關系數據庫)被稱為資源管理器。

應用程序通過調用事務管理器的 begin distributed transaction 方法開始事務。這樣可創建一個代表事務的事務對象。然后應用程序會調用資源管理器來完成事務工作。當某個資源管理器首先代表某個事務工作時,會通過調用事務管理器“登記”到該事務中。隨著事務的發展,事務管理器會跟蹤每個登記到該事務中的資源管理器。當應用程序成功地完成事務的工作后,它會調用 ms dtc 來“提交”事務。然后 ms dtc 會仔細檢查“兩階段” “提交協議”,使所有已登記的資源管理器都提交。兩階段提交協議可確保所有的資源管理器提交此事務,或全都放棄此事務。在第一階段,ms dtc 詢問每個資源管理器是否“準備”提交。如果所有參與者都回答“是”,那么在第二階段 ms dtc 將向所有參與者廣播提交信息。如果事務的任何部分失敗,或資源管理器響應準備請求失敗,或資源管理器響應“否”,。則調用 abort 事務方法,該方法可以撤消事務的操作

2.        msdtc 測試目的

通過進行sql server 2005和本機sql server 2000實例間及和其它獨立sql server 2000計算機的分布式事務的測試來驗證sql server不同版本間分布式事務的兼容性及可行性。

 

3.        msdtc 測試環境

3.1   本次驗證測試環境:

?         一臺真正的計算機(sql server 2000)

?         一臺虛擬機(裝有sql server 2000默認實例及sql server 2005命名實例)

?         測試工具:dtctest &dtcping

3.2   環境配置

1.關閉兩臺計算機的防火墻

2.打開sql server 2005服務器端的tcp監聽


3.打開sql server2005遠程連接


       4.        如下設置msdtc


3.3   驗證msdtc

首先使用dtc test來驗證兩臺計算機dtc是不是工作正常,在兩臺計算機上各建一個odbc datasource,在命令行下運行dtctest


確認msdtc工作正常

3.4   創建驗證用表

1.        在sql server 2005的adventureworks數據庫中使用如下腳本創建表,此表用于以后的msdtc的插入,刪除,更改及查詢測試:

create table dbo.test2005

(

id1 int identity(1,1),

des varchar(100)

)

2.        在sql server 2000的pubs數據庫中使用如下腳本創建表,此表用于以后的msdtc的插入,刪除,更改及查詢測試:

 

create table dbo.test2000

(

id1 int identity(1,1),

des varchar(100)

)

 

4.        linked server測試

4.1                  sql server2005中加入sql server 2000 鏈接服務器,并進行相應的測試

在sql server 2005中,使用向導或者以下腳本來創建一個linked server,使此linked server指向sql server 2000數據庫misdbs01

/****** object:  linkedserver [misdbs01]    script date: 10/27/2005 17:39:33 ******/

exec master.dbo.sp_addlinkedserver @server = n'misdbs01', @srvproduct=n'sql server'

go

exec master.dbo.sp_serveroption @server=n'misdbs01', @optname=n'collation compatible', @optvalue=n'false'

go

exec master.dbo.sp_serveroption @server=n'misdbs01', @optname=n'data access', @optvalue=n'true'

go

exec master.dbo.sp_serveroption @server=n'misdbs01', @optname=n'dist', @optvalue=n'false'

go

exec master.dbo.sp_serveroption @server=n'misdbs01', @optname=n'pub', @optvalue=n'false'

go

exec master.dbo.sp_serveroption @server=n'misdbs01', @optname=n'rpc', @optvalue=n'false'

go

exec master.dbo.sp_serveroption @server=n'misdbs01', @optname=n'rpc out', @optvalue=n'false'

go

exec master.dbo.sp_serveroption @server=n'misdbs01', @optname=n'sub', @optvalue=n'false'

go

exec master.dbo.sp_serveroption @server=n'misdbs01', @optname=n'connect timeout', @optvalue=n'0'

go

exec master.dbo.sp_serveroption @server=n'misdbs01', @optname=n'collation name', @optvalue=null

go

exec master.dbo.sp_serveroption @server=n'misdbs01', @optname=n'lazy schema validation', @optvalue=n'false'

go

exec master.dbo.sp_serveroption @server=n'misdbs01', @optname=n'query timeout', @optvalue=n'0'

go

exec master.dbo.sp_serveroption @server=n'misdbs01', @optname=n'use remote collation', @optvalue=n'true'

 

在sql server 2005中展開對象瀏覽器到linked server 目錄下,可以看到已經有一個叫misdbs01的linked server存在,下面對此linked server進行驗證。驗證步驟將分別用select,delete,update,insert來對sql server 2000 中pubs數據庫下的test2000進行相應操作。

 

/******

retrive data from remote server

 ******/

 

begin distributed tran

    select * from misdbs01.pubs.dbo.test2000

commit tran

 

/******

insert data to remote server

 ******/

set xact_abort on

begin distributed tran

    insert misdbs01.pubs.dbo.test2000(des)

    select 'a'

commit tran

 

/******

delete remote server's data

 ******/

set xact_abort on

begin distributed tran

    delete from  misdbs01.pubs.dbo.test2000

commit tran

 

/******

update remote server's data

 ******/

set xact_abort on

begin distributed tran

    update  misdbs01.pubs.dbo.test2000

    set des='b'

commit tran

同理驗證yukon/dw連接本地的sql server 2000默認實例,也是成功的。

 

上面的測試全部正常工作,由此可見測試可見msdtc是能夠正常工作的,從linked server的創建腳本中我們也可以發現其實sql server 2005中使用的sql native client provider來連接sql server 2000的,參照msdn中的如下描述,我們可以知道能夠正常成功是正常的:

the following table shows the ole db providers that have been tested with sql server distributed queries. all these providers support being referenced in a select statement by specifying a pass-through query in the openquery and openrowset functions.

data source
provider name
use in four-part names
use in pass-through queries and commands
use in insert, update, or delete
use in distributed transactions
sql server 7.0 or later
microsoft sql native client ole db provider
yes
yes
yes
yes

 
 
4.2       sql server2000中加入sql server 2005 鏈接服務器,并進行相應的測試
先在sql server 2000企業管理器或者直接使用t-sql語句新增加一個linked server,此linked server指向sql server 2005.
 
 
sql server 2000中展開對象瀏覽器到linked server 目錄下,可以看到已經有一個叫yukon/dwlinked server存在,下面對此linked server進行驗證。驗證步驟將分別用select,delete,update,insert來對sql server 2005 adventureworks數據庫下的test2005進行相應操作。
 
/******
retrive data from remote server
 ******/
begin distributed tran
    select * from [yukon/dw].adventureworks.dbo.test2005
commit tran
/******
insert data to remote server
 ******/
set xact_abort on
begin distributed tran
    insert [yukon/dw].adventureworks.dbo.test2005(des)
    select 'a'
commit tran
/******
delete remote server's data
 ******/
 
set xact_abort on
begin distributed tran
    delete from  [yukon/dw].adventureworks.dbo.test2005
commit tran
 
/******
update remote server's data
 ******/
set xact_abort on
begin distributed tran
    update [yukon/dw].adventureworks.dbo.test2005
     set des=’b’
commit tran
由上面的測試可以看出由本機sql server 2000連接鏈接到sql server 2005的過程也是成功的,其實現在是使用的sqloledb來進行聯接的。
同理驗證由其它計算的sql server 2000連接鏈接到此sql server 2005實例,經過驗證,也是可以正常工作的,可見sql server 2005依然在這方面支持sql server2000的provider.
 
4.        結論
可見sql server 2000sql server 2005間不同版本間的分布式事務能夠協同工作。


 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 壤塘县| 新泰市| 莱州市| 安龙县| 富民县| 通山县| 云霄县| 九台市| 平利县| 天等县| 彝良县| 六枝特区| 繁峙县| 新河县| 娄底市| 石棉县| 博兴县| 禹城市| 柳河县| 新营市| 隆子县| 贺州市| 南和县| 安阳市| 华亭县| 右玉县| 明水县| 石门县| 喀什市| 连山| 攀枝花市| 句容市| 屏东县| 秀山| 河东区| 呈贡县| 子长县| 彭阳县| 开原市| 上杭县| 武城县|