try:
用sql的“客户端网络配置工具”配置服务器的SERVER NAME,或用ODBC内带的“客户端网络配置工具”配置服务器的SERVER NAME

解决方案 »

  1.   

    既然是不同网段的楼主设置了WINS没有?
      

  2.   

    我加了wins我现在直接执行 select * from 分站名称.db.dbo.table 是没有问题的但是执行
    begin distributed tran
    select * from 分站名称.db.dbo.table
    commit就失败啊提示
    Server: Msg 7391, Level 16, State 1, Line 2
    The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.
    [OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
    OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].
      

  3.   

    WINS是将计算机名解析到IP地址的服务
      

  4.   

    try:
    用sql的“客户端网络配置工具”配置服务器的SERVER NAME,或用ODBC内带的“客户端网络配置工具”配置服务器的SERVER NAME
      

  5.   

    或者试试在前面加上   
    set XACT_ABORT on   
      

  6.   

    而且我用 dtcping.exe  这个工具测试也是通的
    我真是郁闷坏了
      

  7.   

    转邹老大的给你参考一下:  一.   A.不用事务,关用SELECT   语句.是否可以分布式查询?   
            B.LINKSERVER   在做分布式更新事务时不能对本机操作.(就是不能环回分布式事务)   
            C.DBCC   TRACEON   (3604,   7300)--用跟踪看更详细错误信息.   
            D.下载MS提供的DTCPing.exe 分装在两台机上,按README说明来运行它.看出错信息.   
      http://download.microsoft.com/download/complus/msdtc/1.7/nt45/en-us/DTCPing.exe   
        
      二.两台机的MSDTC是否都打开了.   
      三.MSDTC设置是否正确.   
      1.打开命令提示,运行"net   stop   msdtc",然后运行"net   start   msdtc"。   
      2.转至"组件服务管理工具"。   
      3.浏览至"启动管理工具"。   
      4.选择"组件服务"。   
        a.展开"组件服务"树,然后展开"我的电脑"。   
        b.右键单击"我的电脑",然后选择"属性"。   
        C.在   MSDTC   选项卡中,确保选中了下列选项:   网络   DTC   访问   
      网络管理   
      网络事务   
              XA   事务   
        e.另外,"DTC   登录帐户"一定要设置为"NT   Authority\NetworkService"。   
      5.单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。   
          所有的依赖服务将被停止。请按'是'继续"。单击"是"继续。   
      6.单击"确定"关闭"我的电脑"属性窗口。   
        
      四.MSDTC依赖于RPC,RPC使用的端口是135,测试135端口是否打开.是否有防火墙?如果有先关了防火墙.   
      telnet   IP   135   
      如果是关闭的打开它.   
        
      五.有的机由于各种原因),SQLOLEDB不能使用分布式事务,更改为"MSDASQL"   
    的ODBC方式联接.   
      使用RRAS而不是RAS.(控制面版--管理工具--远程服务管理器)   
      Check   whether   you   are   using   Remote   Access   Server   (RAS)   to   access   remote   servers.   If   so,   make   sure   that   you   have   implemented   Routing   RAS   (RRAS).   Linked   server   does   not   work   on   RAS   because   RAS   allows   only   one   way   communication.   
      七.检查你的两台服务器是否在同一个域中.   
      如果不在同一个域中,是否建立可信任联接.   
      八.如果是WIN2000,升级到SP4   
      九.升级MDAC到2.6以上,最好是2.8.   
      十.要安装SQL的最新补丁:   sp4
      

  8.   

    给一个网友的文章你参考:
    跨網段或是防火牆下用windows2003使用MSDTC的設定
    基於工作上的需要以及有實際驗證的過程
    將跨網段或是防火牆下用windows2003使用MSDTC的設定放在網路上來
    網路上已經有許多人寫過不少方式
    可是在我的環境就是RUN不起來
     
    於是綜合各家資料以及微軟官方的資料,終於TRY出來
    以下就是我的方式
    系統是windows2003,兩台機器不在同一網段中
    要使用MSDTC做分散式交易
    實際運作情況
    首先先將
    [開始]==>[控制台]===>[系統管理工具]===>[元件服務]
    下一步
    [元件服務]===>[電腦]===>[我的電腦]===>按右鍵===>選[內容]===>選[MSDTC]標籤頁===>點[安全性設定]
    下一步
    先勾選[網路DTC存取]
     將[用戶端和系統管理]下的,允許遠端用戶端以及允許遠端系統管理,兩個選項打勾
     
     在看[交易管理通訊]下的 允許輸入、允許輸出以及啟用交易網際網路通訊協定(TIP)交易,這三項打勾
     注意一點:需要選擇不需要驗證
     再下面的DTC登入帳戶部分,選擇NT Authority\NetworkService選項
     按下確定後MSDTC會自動停掉重開
     
     若是第一次設定的電腦,還需要[MSDTC]標籤頁旁邊的[預設通訊協定]標籤頁===>點一下[連線導向的TCP/IP]===>按[內容]
     出現[COM Internet服務內容]標籤頁===>按[新增]===>打上 [5000-5020]<===這是微軟說的
     再選擇同頁兩項選項,連接埠範圍指派、預設動態連接埠配置,均選擇 Internet範圍 ==>按下確定
     
    另外,需要在windows\system32\drivers\etc下的hosts檔案中
    要加入對方DB LINK中主機名稱,大小寫要相同,加好後可使用PING指令直接PING看看,看是不是會通
    HOSTS檔案中千萬別斷行,否則會造成錯誤發生無法執行
    以上方式,是用在兩台電腦在不同網段的情況下使用,同一段的電腦則不用此方式。
      

  9.   

    微軟官方作法
    微軟官方的作法是
    您可以設定 DTC 通過防火牆,包括網路位址轉譯防火牆。
    DTC 使用遠端程序呼叫 (RPC) 動態連接埠配置。 依預設值, RPC 動態連接埠配置會隨機選擇大於 1024 的連接埠埠號。修改登錄可以讓您控制 RPC 將那些連接埠動態配給進來的通訊。 之後您可以設定防火牆,只接受由這些連接埠或 135 連接埠 (RPC 端點對應程式連接埠) 進來的外部通訊。
    您必須提供一個連入動態連接埠給 DTC。 您可能需要提供額外的連入動態連接埠給其他需要 RPC 的子系統。
    依預設,本文中的登錄機碼及值不會在登錄中出現;您必須用 [登錄編輯器] 加入他們。
    警告:不當使用「登錄編輯器」可能會導致嚴重的問題,甚至必須重新安裝作業系統。Microsoft 不保證您可以解決錯誤使用登錄編輯器所造成的問題。請自行承擔使用「登錄編輯器」的風險。
    請依照下列步驟來控制 RPC 動態連接埠配置。 您必須在這兩部電腦上作執行這個動作。 請注意指定連接埠的雙向通訊,防火牆都必須開啟:
    1. 如果要啟動 [登錄編輯器],請按一下 [開始],然後按一下 [執行],輸入 regedt32,然後按一下 [確定]。
    您必須使用 Regedt32.exe,而不是 Regedit.exe,因為 Regedit.exe 並不支援該連接埠值所需要的 REG_MULTI_SZ 資料型態。
    2. 請在 [登錄編輯器] 中,按一下 [本機電腦] 視窗的 HKEY_LOCAL_MACHINE 。
    3. 請依照下列路徑,按兩下指定的檔案夾以展開樹狀圖:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc
    4. 按一下 RPC 檔案夾,然後按一下 [新增機碼] (在 [編輯] 功能表中)。
    5. 在 [新增機碼] 對話方塊中 (在 [機碼名稱] 方塊中),輸入 Internet,然後按一下 [完成]。
    6. 按一下 Internet 檔案夾, 然後按一下 [新增值] (在 [編輯] 功能表中)。
    7. 在 [新增值] 對話方塊中 (在 [值名稱] 方塊中),輸入 Ports。
    8. 在 [編輯] 方塊中,選擇 [REG_MULTI_SZ],然後按一下[完成]。
    9. 於 [多字串值編輯器] 對話方塊中,於[資料] 方塊中,指定連接埠 或是您要 PRC 動態指定連接埠 ,然後按一下 [完成]。
    您輸入的每個字串值會指定一個連接埠或是某範圍內的連接埠 。 例如,如果要開啟連接埠 5000,請指定 "5000"。 如果要開啟含連接埠 5000 到 5020 ,請指定 "5000-5020"。 一行指定一個連接埠或一行指定某範圍的連接埠,這個方法讓您可以指定多個連接埠或是某個連接埠範圍。 所有的連接埠必須在 1024 到 65535 的範圍內。如果有任何連接埠不在此範圍或是有任何不合法的字串,RPC 會將這整個設定當作是無效的。
    Microsoft 建議您開啟埠號大於 5000 (含),並且至少開啟 15 到 20 個連接埠。
    10. 按照步驟 6 到 9 對 Internet 新增另一個機碼,並使用下列數值:
    值:PortsInternetAvailable
    資料類型: REG_SZ
    資料: Y
    表示列在 Ports 值下的連接埠數值是具有 Internet 連結的。
    11. 接著按照步驟 6 到 9 對 Internet 新增另一個機碼,並使用下列數值:
    值:UseInternetPorts
    資料類型: REG_SZ
    資料: Y
    這表示 RPC 應該自動地從 Internet 連接埠清單中設定號碼。
    12. 設定您的防火牆允許對指定的連接埠、135 連接埠 (RPC 端點對應程式連接埠) 做輸入連結存取。
    13. 重新啟動電腦。 當 RPC 重新啟動,它會自動依照您指定的登錄值來指定輸入連接埠。 例如,如果要開啟連接埠 5000 到 5020,請建立下列值:Ports : REG_MULTI-SZ :5000-5020
    PortsInternetAvailable:REG_SZ: Y
    UseInternetPorts :REG_SZ:Y DTC 同時需要您能以 NetBIOS 或 DNS 的方式來解析電腦名稱。 您可以利用 ping 和伺服器名稱來測試 NetBIOS 是否可以解析電腦名稱。 用戶端電腦必須能夠解析伺服器的名稱,伺服器也須能夠解析用戶端名稱。 如果 NetBIOS 無法解析電腦名稱,您可以將整筆項目加入電腦上的 LMHOSTS 檔案。
      

  10.   

    还是一样的错误问题啊 快疯掉了!!但也要非常感谢 gc_ding(E.T) 给我的解决方案。这些方法我也曾阅读过 谢谢!