文章編號: 321822 - 上次校閱: 2005年11月24日 - 版次: 3.5

HOW TO:在不受信任網域或網際網路中執行 SQL Server 的電腦之間設定複寫

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

本文內容

在兩部執行 SQL Server 的電腦之間設定複寫

當您在兩部執行 SQL Server 的電腦之間設定複寫時,請考慮下列兩個問題。

複寫代理程式的安全性內容

您可以設定複寫代理程式 (包含「記錄讀取器代理程式」、「合併代理程式」、「散發代理程式」和「快照集代理程式」):
  • 模擬本機伺服器 (信任連線) 上的 SQL Server 代理程式帳戶。

    - 或 -
  • 使用 SQL Server 驗證。
代理程式的可執行檔 (包含 Logread.exe 和 Replmerg.exe) 會在執行代理程式之伺服器的 SQL Server 代理程式帳戶內容下執行。前面兩個選項會判斷複寫代理程式如何連線到目的伺服器上的 SQL Server 服務。這些選項並不會控制在作業系統層級中進行通訊的方式。瞭解這些選項並不會控制此層級中的通訊之後,您便可以解決複寫安裝期間所發生大部分的安全性問題。

預設的用戶端網路程式庫

從 SQL Server 2000 (Microsoft Data Access Component [MDAC] 2.6) 開始,預設的用戶端網路程式庫就設定成 TCP/IP。在舊版 SQL Server 中,預設的用戶端網路程式庫被設定成具名管道。如果用戶端電腦藉由使用別名,來使用「具名管道」與伺服器通訊,或是因為用戶端執行的是舊版的 MDAC,且伺服器位於信任的網域,則複寫代理程式的可執行檔就會在目的伺服器上建立具名管道 (作業系統層級中的檔案) 以建立連線。

可執行檔會使用來源伺服器上的「SQL Server 代理程式」帳戶安全性內容來建立具名管道。如果目的伺服器無法確認這個帳戶的憑證,則連線沒有成功,且您會收到下列錯誤訊息:
SQL server does not exist or access is denied. (SQL Server 不存在或拒絕存取)
如需有關此錯誤訊息的詳細資訊,Microsoft 建議您使用工具 (如 ODBC DSN 精靈的 Isql.exe),嘗試建立從來源伺服器到目的伺服器的連線。您將會收到作業系統層級的錯誤訊息,其內容會類似下列其中一個錯誤訊息:
  • 10060 - Connection timed out (10060 - 連線逾時)
  • 10061 - Connection refused (10061 - 連線被拒)
如果目的伺服器位於不受信任的網域,或者伺服器是由網際網路所分隔的獨立伺服器,您就會收到這些錯誤。無法透過網際網路,在兩個不同的獨立伺服器之間建立具名管道連線。如果要測試兩個伺服器之間的具名管道連線,您可以使用 Makepipe 和 Readpipe 公用程式。如需有關 Makepipe 和 Readpipe 公用程式的詳細資訊,請參閱《SQL Server 線上叢書》中的<具名管道用戶端連線>主題。

如果您使用的是 TCP/IP,則會使用通訊端網路程式庫所發出的 Winsock API 呼叫來建立連線。連線會使用 TCP 三向信號交換通訊協定來建立基礎的 TCP 工作階段。用戶端電腦會開啟來源連接埠並與目的連接埠通訊。

您使用 IP 位址設定複寫時,所發生的問題


如果您不使用用戶端別名,而改用 IP 位址來登錄伺服器 (「發行者」或「訂閱者」),或者用戶端別名與實際的 SQL Server NetBIOS 名稱不相同,則「合併代理程式」可能就會失敗,且您會收到下列錯誤訊息:
  • 錯誤 20084:
    The process could not connect to subscriber 'IP address'. (處理序無法連線到訂閱者 IP address)
  • 錯誤 18456:
    Login failed for user 'administrator'
  • The subscription to publication 'test' is invalid. (使用者 administrator 登入失敗。發行集 test 的訂閱無效)
  • 錯誤 14010:
    The remote server is not defined as a subscription server. (並未將遠端伺服器定義為訂閱伺服器)
    如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    217395? (http://support.microsoft.com/kb/217395/ ) PRB:錯誤 18482:"Unable to Connect to Site (無法連接站台). . .. ."
  • Could not configure[SQL Server Name] as the distributor for[SQL Server Name] (無法將 [SQL Server Name] 設定為 [SQL Server Name] 的散發者).
  • 錯誤 18483:
    Could not connect to server[SQL Server Name] because 'distributor_admin' is not defined as a remote login at the server. (無法連線至伺服器 [SQL Server Name]。因為並未將 distributor_admin 定義為伺服器中的遠端登入)
如果要避免收到這些訊息,請務必建立一個別名,且此別名必須與您嘗試登錄 SQL Server Enterprise Manager 的伺服器名稱相同。




在網際網路中兩部執行 SQL Server 的電腦之間設定複寫

範例 1:訂閱者具有結構描述和資料,而初始快照集是不必要的。


發佈訂閱
  1. 從命令提示字元,從「訂閱者」Ping 一下「發行者」,然後再從「發行者」Ping 一下「訂閱者」,以確定「發行者」和「訂閱者」彼此之間可以互相連線。

    「發行者」和「訂閱者」之間必須要有名稱解析,才能進行通訊。
  2. 在「訂閱者」的 SQL Server 的錯誤日誌中,請注意執行 SQL Server 之電腦正在接聽的連接埠。
  3. 使用「用戶端網路公用程式」,以下列資訊建立「發行者」中「訂閱者」的 TCP/IP 別名:
    • 伺服器別名:訂閱者名稱
    • 網路程式庫:TCP/IP
    • 連線參數
    • 伺服器名稱:訂閱者的 IP 位址
    • 連接埠編號:訂閱者的連接埠編號 (根據預設,此連接埠編號為 1433)。
  4. 要求以「訂閱者」資料庫的足夠使用權限,在「訂閱者」上建立 SQL Server 登入帳戶。如需有關如何設定安全性的詳細資訊,請參閱《SQL Server 2000 線上叢書》中的下列主題:
    • 代理程式登入安全性
    • 連線至散發者
    • 複寫安全性
    • 安全性注意事項 (位置:複寫)
  5. 使用 SQL Server 驗證,將「訂閱者」登錄至「發行者」的 SQL Server Enterprise Manager。
  6. 在「發行者」上,啟用目的伺服器以作為「訂閱者」。如果要執行這項操作,請依照下列步驟執行:
    1. 在 [SQL Server Enterprise Manager] 的 [工具] 功能表上,指向 [複寫],然後按一下 [設定發行、訂閱者及散發]
    2. 按一下 [訂閱者] 索引標籤,然後按一下 [屬性 (...)] 按鈕。
    3. 按一下 [一般] 索引標籤,按一下 [使用這個帳戶的 SQL Sever 帳戶驗證] 以指定複寫代理程式使用 SQL Server 驗證,然後加入步驟 4 的帳戶資訊。
提取訂閱


如果要提取訂閱,請先在「訂閱者」中為「發行者」建立別名,然後依照下列步驟執行:
  1. 從 [發行者] 的 [SQL Enterprise Manager] 中,在 [工具] 功能表上,指向 [複寫],然後按一下 [設定發行、訂閱者及散發]

    注意 因為並未為散發者設定「訂閱者」,所以「訂閱者」無法使用 [設定發行、訂閱者及散發] 選項。
  2. 按一下 [發行者] 索引標籤。
  3. 按一下 [發行者],然後按一下 [屬性 (...)] 按鈕。
  4. 按一下 [一般] 索引標籤,按一下 [使用這個帳戶的 SQL Sever 驗證] 以指定複寫代理程式使用 SQL Server 驗證,然後指定在發行資料庫中具有足夠使用權限的帳戶。

範例 2:「訂閱者」沒有架構和資料,且「發行者」的初始訂閱是必要的。

這個範例會要求您在「發行者」中設定 FTP 服務,然後將「訂閱者」設定為從 FTP 站台下載初始快照集。如需詳細資訊,請參閱《SQL Server 線上叢書》的下列主題:
  • <網際網路上的安全性及複寫>
  • <使用 TCP/IP 和 FTP 在網際網路上發行資料>
  • <將發行者或散發者設定為在 TCP/IP 上接聽>
  • <將發行集設定為允許訂閱者使用 FTP 擷取快照集>
  • <將訂閱設定為使用 FTP 擷取快照集>
  • <產生初始快照集>
確定執行複寫代理程式之伺服器上的預設用戶端網路程式庫設定為 TCP/IP。


使用「Windows 帳戶驗證」,在不受信任網域中執行 SQL Server 的電腦之間設定複寫


如果您必須使用「Windows 帳戶驗證」在兩個不受信任的網域或工作群組中設定複寫,則必須設定移轉驗證。在「發行者」和「訂閱者」上設定具有相同名稱和密碼的本機 Windows 帳戶。設定此帳戶後,使用帳戶以啟動「發行者」的「SQL Server 代理程式」服務以發佈訂閱,以及啟動「訂閱者」上的「SQL Server 代理程式」服務以提取訂閱。請確定您是根據《SQL Server 線上叢書》中的<設定 Windows 服務帳戶>主題來設定此帳戶。

如果使用者嘗試建立連至不受信任網域之遠端電腦的網路連線,登入就會如同使用者正在連線到遠端電腦的帳戶一樣。遠端電腦會使用登入的目錄資料庫來驗證登入憑證。如果帳戶不是在目錄資料庫中定義,但遠端電腦上的來賓帳戶已經啟用且尚未設定密碼,則使用者會以來賓使用權限登入。如果尚未啟用來賓帳戶,則登入將不會成功。

重要 在前述範例中,如果兩個伺服器之間有防火牆,請確定防火牆根據下列文件加以設定:
287932? (http://support.microsoft.com/kb/287932/ ) INF:透過防火牆和 SQL Server 通訊所需的 TCP 通訊埠

?考

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
320499? (http://support.microsoft.com/kb/320499/ ) HOW TO:Manually Synchronize Replication Subscriptions by Using Backup or Restore
312292 ? (http://support.microsoft.com/kb/312292/ ) HOW TO:Enable Replication Agents for Logging to Output Files in SQL Server
299903 ? (http://support.microsoft.com/kb/299903/ ) FIX:sp_scriptpublicationcustomprocs Generates Replication Stored Procedures

這篇文章中的資訊適用於:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 7.0 Standard Edition
關鍵字:?
kbhowtomaster KB321822
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。