zgqtxwd的專欄
阿新 • • 發佈:2019-01-04
<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 DTransaction.
[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 DThenclickProperties.
3.IntheMyComputerPropertiesdialogbox,ontheMSDTCtab,clickSecurityConfiguration.
4.IntheSecurityConfigurationdialogbox,selecttheNetworkDTCcheckbox,selecttheNetworkAdministrationcheckbox,selecttheNetworkTransactionscheckbox,selecttheNetworkClientscheckbox,selecttheTransactionInternetProtocol(TIP)Transactioncheckbox,an DThenclickOK.
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>
Q:假設我現在有2臺SQLServer(WindowsServer2003+SQLServer200sp3),分別叫DB01和DB02,互相信任,互相把對方加入了LinkedServers的列表,常規訪問無任何問題,但是無法啟用分散式事務,例子如下:
在DB01上執行下列SQL命令:
begintran
selecttop1*fromitem
selecttop1*fromdb02.production.dbo.item
rollbacktran
在第2個select語句處提示TheoperationcouldnotbeperformedbecausetheOLEDBprovider'SQLOLEDB'wasunabletobeginadistribute
[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
3.IntheMyComputerPropertiesdialogbox,ontheMSDTCtab,clickSecurityConfiguration.
4.IntheSecurityConfigurationdialogbox,selecttheNetworkDTCcheckbox,selecttheNetworkAdministrationcheckbox,selecttheNetworkTransactionscheckbox,selecttheNetworkClientscheckbox,selecttheTransactionInternetProtocol(TIP)Transactioncheckbox,an
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>