資源描述:
《sqlserver分布式事務(wù)配置》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、SQLServer分布式事物配置適用環(huán)境操作系統(tǒng):windows2008數(shù)據(jù)庫:sqlserver2008問題現(xiàn)象在執(zhí)行分布式事務(wù)時,在sqlserver2005下收到如下錯誤:消息7391,級別16,狀態(tài)2,過程xxxxx,第16行無法執(zhí)行該操作,因為鏈接服務(wù)器"xxxxx"的OLEDB訪問接口"SQLNCLI"無法啟動分布式事務(wù)。解決方案1.雙方啟動MSDTC服務(wù)MSDTC服務(wù)提供分布式事務(wù)服務(wù),如果要在數(shù)據(jù)庫中使用分布式事務(wù),必須在參與的雙方服務(wù)器啟動MSDTC(DistributedTransactionCoordinator)服務(wù)。2.打開雙方1
2、35端口MSDTC服務(wù)依賴于RPC(RemoteProcedureCall(RPC))服務(wù),RPC使用135端口,保證RPC服務(wù)啟動,如果服務(wù)器有防火墻,保證135端口不被防火墻擋住。使用“telnetIP135”命令測試對方端口是否對外開放。也可用端口掃描軟件(比如AdvancedPortScanner)掃描端口以判斷端口是否開放。3.保證鏈接服務(wù)器中語句沒有訪問發(fā)起事務(wù)服務(wù)器的操作在發(fā)起事務(wù)的服務(wù)器執(zhí)行鏈接服務(wù)器上的查詢、視圖或存儲過程中含有訪問發(fā)起事務(wù)服務(wù)器的操作,這樣的操作叫做環(huán)回(loopback),是不被支持的,所以要保證在鏈接服務(wù)器中不存在此
3、類操作。在事務(wù)開始前加入setxact_abortON語句對于大多數(shù)OLEDB提供程序(包括SQLServer),必須將隱式或顯示事務(wù)中的數(shù)據(jù)修改語句中的XACT_ABORT設(shè)置為ON。唯一不需要該選項的情況是在提供程序支持嵌套事務(wù)時。MSDTC設(shè)置打開“管理工具――組件服務(wù)”,以此打開“組件服務(wù)――計算機”,在“我的電腦”上點擊右鍵。在MSDTC選項卡中,點擊“安全配置”按鈕。在安全配置窗口中做如下設(shè)置:選中“網(wǎng)絡(luò)DTC訪問”在客戶端管理中選中“允許遠程客戶端”“允許遠程管理”在事務(wù)管理通訊中選“允許入站”“允許出站”“不要求進行驗證”保證DTC登陸賬戶
4、為:NTAuthorityNetworkService4.鏈接服務(wù)器和名稱解析問題建立鏈接sqlserver服務(wù)器,通常有兩種情況:1.第一種情況,產(chǎn)品選”sqlserver”EXECsp_addlinkedserver@server='linkServerName',@srvproduct=N'SQLServer這種情況,@server(linkServerName)就是要鏈接的sqlserver服務(wù)器名或者ip地址。1.第二種情況,訪問接口選“MicrosoftOLEDBProviderSqlServer”或“SqlNativeClient”EXEC
5、sp_addlinkedserver@server='linkServerName',@srvproduct='',@provider='SQLNCLI',@datasrc='sqlServerName'這種情況,@datasrc(sqlServerName)就是要鏈接的實際sqlserver服務(wù)器名或者ip地址。Sqlserver數(shù)據(jù)庫引擎是通過上面設(shè)置的服務(wù)器名或者ip地址訪問鏈接服務(wù)器,DTC服務(wù)只通過服務(wù)器名地址訪問鏈接服務(wù)器,所以要保證數(shù)據(jù)庫引擎和DTC都能通過服務(wù)器名或者ip地址訪問到鏈接服務(wù)器。數(shù)據(jù)庫引擎和DTC解析服務(wù)器的方式不太一樣,下面
6、分別敘述4.1數(shù)據(jù)庫引擎第一種情況的@server或者第二種情況的@datasrc設(shè)置為ip地址時,數(shù)據(jù)庫引擎會根據(jù)ip地址訪問鏈接服務(wù)器,這時不需要做名稱解析。第一種情況的@server或者第二種情況的@datasrc設(shè)置為sqlserver服務(wù)器名時,需要做名稱解析,就是把服務(wù)器名解析為ip地址。有兩個辦法解析服務(wù)器名:一是在sqlserver客戶端配置中設(shè)置一個別名,將上面的服務(wù)器名對應(yīng)到鏈接服務(wù)器的ip地址。二是在“C:WINDOWSsystem32driversetchosts”文件中增加一條記錄:xxx.xxx.xxx.xxx服務(wù)器名
7、作用同樣是把服務(wù)器名對應(yīng)到鏈接服務(wù)器的ip地址。4.2DTC不管哪一種情況,只要@server設(shè)置的是服務(wù)器名而不是ip地址,就需要進行名稱解析,辦法同上面第二種辦法,在hosts文件中增加解析記錄,上面的第一種辦法對DTC不起作用。如果@server設(shè)置的是ip地址,同樣不需要做域名解析工作。5.遠程服務(wù)器上的名稱解析分布式事務(wù)的參與服務(wù)器是需要相互訪問的,發(fā)起查詢的服務(wù)器要根據(jù)機器名或ip查找遠程服務(wù)器的,同樣遠程服務(wù)器也要查找發(fā)起服務(wù)器,遠程服務(wù)器通過發(fā)起服務(wù)器的機器名查找服務(wù)器,所以要保證遠程服務(wù)器能夠通過發(fā)起服務(wù)器的機器名訪問到發(fā)起服務(wù)器。一般的
8、,兩個服務(wù)器在同一網(wǎng)段機器名能就行很好的解析,但是也不保證都能很好