1. 程式人生 > >zgqtxwd的專欄

zgqtxwd的專欄

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
Q:假設我現在有2臺SQLServer(WindowsServer2003+SQLServer200sp3),分別叫DB01和DB02,互相信任,互相把對方加入了LinkedServers的列表,常規訪問無任何問題,但是無法啟用分散式事務,例子如下:

在DB01上執行下列SQL命令:

begintran

selecttop1*fromitem

selecttop1*fromdb02.production.dbo.item

rollbacktran

在第2個select語句處提示TheoperationcouldnotbeperformedbecausetheOLEDBprovider'SQLOLEDB'wasunabletobeginadistribute
DT
ransaction.
[OLE/DBproviderreturnedmessage:NewtransactioncannotenlistinthespecifieDTransactioncoordinator.]
OLEDBerrortrace[OLE/DBProvider'SQLOLEDB'ITransactionJoin::JoinTransactionreturned0x8004d00a].

把begintran換成BEGINDISTRIBUTEDTRANSACTION,結果相同。

在這2臺伺服器上,已經同時啟用了MSDTC服務,並在ComponentService中設定了MSDTC各種支援選項全開(步驟如下:

1.ClickStart,pointtoAllPrograms,pointtoAdministrativeTools,andclickComponentServices.
2.IntheComponentServicesconsole,expandComponentServices,expandComputers,right-clickMyComputer,an
DT
henclickProperties.
3.IntheMyComputerPropertiesdialogbox,ontheMSDTCtab,clickSecurityConfiguration.
4.IntheSecurityConfigurationdialogbox,selecttheNetworkDTCcheckbox,selecttheNetworkAdministrationcheckbox,selecttheNetworkTransactionscheckbox,selecttheNetworkClientscheckbox,selecttheTransactionInternetProtocol(TIP)Transactioncheckbox,an
DT
henclickOK.
5.Restartthecomputer.
)。
因為伺服器正在執行任務,所以我沒有重新啟動(僅僅重新啟動了DTC服務).
是什麼原因導致無法啟動事務呢?

A:

一.(缺) 

二.兩臺機的MSDTC是否都打開了.

三.MSDTC設定是否正確.
1.開啟命令提示,執行"netstopmsDTc",然後執行"netstartmsDTc"。
2.轉至"元件服務管理工具"。
3.瀏覽至"啟動管理工具"。
4.選擇"元件服務"。
 a.展開"元件服務"樹,然後展開"我的電腦"。
 b.右鍵單擊"我的電腦",然後選擇"屬性"。
 C.在MSDTC選項卡中,確保選中了下列選項:網路DTC訪問
 網路管理
 網路事務
  XA事務
 e.另外,"DTC登入帳戶"一定要設定為"NTAuthority/NetworkService"。
5.單擊"確定"。這樣將會提示您"MSDTC將會停止並重新啟動。
 所有的依賴服務將被停止。請按'是'繼續"。單擊"是"繼續。
6.單擊"確定"關閉"我的電腦"屬性視窗。

四.
MSDTC依賴於RPC,RPC使用的埠是135,測試135埠是否開啟.是否有?如果有先關了防火牆.
telnetIP135
如果是關閉的開啟它.

五.
有的機由於各種原因),SQLOLEDB不能使用分散式事務,更改為"MSDASQL"的ODBC方式聯接.
使用RRAS而不是RAS.(控制面版--管理工具--遠端服務管理器)
CheckwhetheryouareusingRemoteAccessServer(RAS)toaccessremoteservers.Ifso,makesurethatyouhaveimplementedRoutingRAS(RRAS).LinkedserverdoesnotworkonRASbecauseRASallowsonlyonewaycommunication.


七.檢查你的兩臺伺服器是否在同一個域中.
如果不在同一個域中,是否建立可信任聯接.

八.如果是WIN2000,升級到SP4

九.升級MDAC到2.6以上,最好是2.8.

十.要安裝SQL的最新補丁:sp3a
'全部補丁的位置
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=9032f608-160a-4537-a2b6-4cb265b80766共2頁  第1頁 
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>