--BEGIN DISTRIBUTED TRANSACTION [transactionname]
--標(biāo)志一個(gè)由分布式事務(wù)處理協(xié)調(diào)器MSDTC管理的TSQL分布式事務(wù)開始
--SERVER A服務(wù)器為主控服務(wù)器。當(dāng)連接發(fā)出后續(xù)COMMIT TRANSACTION或
--ROLLBACK TRANSACTION語句時(shí),主控服務(wù)器請(qǐng)求MSDTC在所涉及的服務(wù)器間管理
--分布式事務(wù)的完成
--SQLSERVER使用鏈接服務(wù)器或者遠(yuǎn)程服務(wù)器作為分布式事務(wù)處理的平臺(tái),提供
--遠(yuǎn)程存儲(chǔ)過程調(diào)用和分布式查詢
--當(dāng)使用分布式事務(wù)進(jìn)行一個(gè)遠(yuǎn)程存儲(chǔ)過程調(diào)用和一個(gè)分布式查詢時(shí),在SERVER A
--上發(fā)出BEGIN DISTRIBUTED TRANSACTION ,該連接調(diào)用SERVER B上的存儲(chǔ)過程
--和SERVER C上的另一個(gè)存儲(chǔ)過程,并且SERVER C上的存儲(chǔ)過程對(duì)SERVER D執(zhí)行一個(gè)
--分布式查詢,則四個(gè)SQLSERVER服務(wù)器進(jìn)入分布式事務(wù)中,SERVER A是該事務(wù)的創(chuàng)建者
--和控制服務(wù)器
--創(chuàng)建分布式事務(wù),在本地和遠(yuǎn)程數(shù)據(jù)庫同時(shí)刪除一條記錄,其中,遠(yuǎn)程SQLSERVER
--的實(shí)例名稱為RemoteServer。本地和遠(yuǎn)程數(shù)據(jù)庫同時(shí)提交或同時(shí)回滾該事務(wù)。
--注意,執(zhí)行分布式查詢或調(diào)用存儲(chǔ)過程時(shí),使用4部分名稱限定規(guī)則
--前提:本機(jī)的MSDTC和遠(yuǎn)程機(jī)器的MSDTC服務(wù)要打開
--本機(jī)和遠(yuǎn)程機(jī)器能互相ping通
--數(shù)據(jù)庫端口能互相telnet通
--創(chuàng)建一個(gè)鏈接服務(wù)器到遠(yuǎn)程機(jī)器WIN7U-20130414Z
USE [GPOSDB]
GO
SELECT * FROM [SystemPara] WHERE [Name]='HDTPort'
SELECT * FROM [WIN7U-20130414Z].[GPOSDB].dbo.[SystemPara] WHERE [Name]='HDTPort'
USE [GPOSDB]
GO
BEGIN DISTRIBUTED TRANSACTION
--從本地?cái)?shù)據(jù)庫刪除一條記錄
DELETE FROM [JOE].[GPOSDB].[DBO].[SystemPara]
WHERE [Name]='HDTPort'
--從遠(yuǎn)程數(shù)據(jù)庫中刪除一條記錄
DELETE FROM [GPOSDB].[dbo].[SystemPara]
WHERE [Name]='HDTPort'
COMMIT TRAN
GO
--個(gè)人嘗試了下是由于在雙向的sql server訪問中采用了鏈?zhǔn)椒绞皆L問(LinkedServer方式),
--遇到這種情況只需要將原來訪問對(duì)方數(shù)據(jù)庫的語句:
--select * from linkedServerA.dbo.table1
--修改為:
--select * from dbo.table1即可。
--標(biāo)記下,以便以后解決。