適用於:SQL Server
SQL Server 合併式複寫的 Web 同步處理選項可讓您透過網際網路使用 HTTPS 通訊協定進行資料複寫。 若要使用 Web 同步處理,您必須先執行下列組態設定動作:
建立新的網域帳戶並對應 SQL Server 登入帳戶。
將正在執行 Microsoft Internet Information Services (IIS) 的電腦設定為同步處理訂閱。
將合併發行集設定為允許 Web 同步。
將一個或多個訂閱設定為使用 Web 同步處理。
注意
如果您打算複寫大量資料或使用大型資料類型 (例如 varchar(max) ),請參閱本主題的<複寫大量資料>一節。
為了順利設定 Web 同步處理,您必須決定如何設定安全性以符合特定需求和原則。 建議您最好先進行這些決定並建立必要的帳戶,然後再嘗試設定 IIS、發行集和訂閱。
為了簡潔起見,在下列程序中,我們將描述使用本機帳戶的簡化安全性組態。 這個簡化的組態適用於 IIS 與 SQL Server 發行者和散發者在同一部電腦上執行的安裝,即使您比較可能會使用多伺服器拓撲進行實際執行安裝也一樣 (而且這是建議作法)。 在這些程序中,您可以用網域帳戶來取代本機帳戶。
建立新的帳戶並對應 SQL Server 登入
SQL Server Replication Listener (replisapi.dll) 會藉由模擬與複寫網站相關聯之應用程式集區所指定的帳戶身分,連線至發行者。
用於 SQL Server Replication Listener 的帳戶必須擁有如 合併代理程式 Security (位於 <連接到發行者或散發者> 一節底下) 所描述的權限。總之,該帳戶必須:
成為發佈存取清單 (PAL) 的成員。
對應至出版資料庫中與某位使用者相關聯的登入帳戶。
對應至與發佈資料庫中使用者相關聯的登入帳戶。
具有快照共用的讀取權限。
如果這是您第一次使用 SQL Server 複寫,您也必須建立複寫代理程式的帳戶和登入。 如需詳細資訊,請參閱本主題中的<設定發行集>和<設定訂閱>章節。
在設定 Web 同步處理之前,我們建議您先閱讀本主題中的<Web 同步處理安全性最佳作法>一節。 如需有關 Web 同步處理安全性的詳細資訊,請參閱< Security Architecture for Web Synchronization>。
設定正在執行 IIS 的電腦
Web 同步處理要求您安裝並設定 IIS。 在將發行集設定為使用 Web 同步之前,您需要先取得複寫 Web 網站的 URL。
IIS 5.0 版開始支援 Web 同步處理。 但是,IIS 7.0 版不支援「設定 Web 同步處理精靈」。 從 SQL Server 2012 開始,若要在 IIS 伺服器上使用 Web 同步處理元件,我們建議使用者安裝具有複寫功能的 SQL Server。 例如,免費的 SQL Server Express Edition。
Web 同步處理需要使用 TLS。 您需要擁有憑證授權單位所核發的安全性憑證。 如果只是為了測試,您可以使用自行核發的安全性憑證。
設定 IIS 以進行 Web 同步處理
SQL Server Management Studio:針對 Web 同步處理設定 IIS
SQL Server Management Studio:為 Web 同步設定 IIS 7
建立 Web 園區
SQL Server 複寫接聽程式支援每個執行緒可同時進行兩項同步作業。 超過這個限制可能會導致 Replication Listener 停止回應。 配置給 replisapi.dll 的執行緒數目是由應用程式集區的 [工作者處理序數上限] 屬性所決定。 根據預設,這個屬性設定為 1。
您可以透過提高 [工作者處理序數上限] 屬性值,讓每個 CPU 支援更多並行同步作業。 透過增加每個 CPU 的工作處理序數目來進行向外擴展,稱為建立「Web garden」。
Web 園藝功能可讓超過兩個訂閱者同時進行同步。 同時也會讓 CPU 利用率增加 replisapi.dll,這可能會對整體伺服器效能產生負面影響。 當您為 [工作者處理序數上限] 選擇值時,請務必權衡這些因素。
若要增加 IIS 7 中工作者處理序的數目上限
在 [Internet Information Services (IIS) 管理員] 中,展開本機伺服器節點,然後按一下 [應用程式集區] 節點。
選取與 Web 同步處理網站相關聯的應用程式集區,然後按一下 [動作] 窗格上的 [進階設定] 。
在 [進階設定] 對話方塊的 [處理序模型] 標題底下,按一下標示為 [工作者處理序數上限] 的列。 變更屬性值,然後按一下 [確定]。
設定發行集
若要使用 Web 同步處理,請採用您建立標準合併拓撲的相同方式來建立發行集。 如需詳細資訊,請參閱發行資料和資料庫物件。
在建立發行集之後,請利用下列其中一種方法來啟用允許 Web 同步處理的選項:SQL Server Management Studio、Transact-SQL 或 Replication Management Objects (RMO)。 若要啟用 Web 同步處理,您必須提供訂閱者連接的 Web 伺服器位址。
如果您是首次使用發布者,還必須設定散發者和快照共用資料夾。 各訂閱者上的合併代理程式都必須具有快照共用的讀取權限。 如需更多資訊,請參閱設定發佈與保護快照資料夾。
gen 是 websync XML 檔案中的保留字。 請勿嘗試發行包含資料行名稱 gen的資料表。
設定訂閱
啟用發行並完成 IIS 設定之後,請建立提取式訂閱,並指定該提取式訂閱應使用 IIS 進行同步處理。 (Web 同步僅支援提取訂閱。)
從舊版 SQL Server 升級
如果您有設定好的現有 Web 同步處理拓撲,而且要升級 SQL Server,您必須確認已將最新版的 Replisapi.dll 複製到 Web 同步處理所使用的虛擬目錄。 根據預設,最新版的 Replisapi.dll 位於 C:\Program Files\Microsoft SQL Server\<nnn>\COM。
複寫大量資料
為了避免訂閱者電腦上可能發生的記憶體問題,Web 同步處理會針對用於傳送變更的 XML 檔案使用 100 MB 的預設大小上限。 可以設定以下登錄機碼來設定此限制:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\Replication
WebSyncMaxXmlSize DWORD 2000000
此機碼的可接受值範圍是 100 MB 到 4GB。 該值會以 KB 來指定。 將這個參數設定為高的值並不保證您可以同步處理該數量的資料。 有效的限制是由訂閱者電腦上可用的連續記憶體數量所限制。 如果您的值必須大於 100 MB,我們建議您最好以累加方式增加這個值,並在訂閱者上使用一般的工作負載來測試記憶體耗用量。
XML 檔案的大小上限為 4 GB,不過複寫會分批次同步處理來自該檔案的變更。 資料和中繼資料的批次大小上限為 25 MB。 您必須確保每個批次的資料不超過約 20 MB,以預留中繼資料和任何其他額外負荷的空間。 這項限制具有下列含意:
您無法複寫任何會使資料和中繼資料總量超過 25 MB 的資料行。 當您要複寫包含大型資料類型 (例如 varchar(max) ) 的資料列時,這可能會產生問題。
如果您要複寫大量資料,可能必須調整合併代理程式的批次大小。
合併式複寫的批次大小是以 世代 為單位來衡量,而世代是指每個發行項目的一組變更。 批次中的世代數目是使用合併代理程式的 -DownloadGenerationsPerBatch 和 -UploadGenerationsPerBatch 參數指定的。 如需詳細資訊,請參閱 Replication 合併代理程式。
若為大量資料,請針對每個批次參數指定一個少量數目。 我們建議您從 10 這個值開始,然後根據需求和效能進行微調。 一般而言,這些參數都指定於代理程式設定檔中。 如需有關設定檔的詳細資訊,請參閱< Replication Agent Profiles>。
Web 同步處理安全性最佳作法
Web 同步處理的安全性相關設定有多種選擇, 我們建議下列方式:
SQL Server 散發者和發行者可位於同一部電腦上(這是合併式複寫的典型設定)。 不過,IIS 應該安裝在個別的計算機上。
利用傳輸層安全性 (TLS) (先前稱為安全通訊端層 (SSL)) 來加密訂閱者與執行 IIS 的電腦之間的連線。 Web 同步處理要求這一操作。
對訂閱者與 IIS 之間的連接使用「基本驗證」。 IIS 可以利用基本驗證來代替「訂閱者」建立到「發行者」/「散發者」的連接,而不需要委派。 如果使用「整合式驗證」,則需要委派。
注意
基本驗證是將認證傳遞至 IIS 的方法。 基本驗證無法防止將 Windows 網域帳戶指定用於連線至 IIS 的連線。
指定「快照代理程式」應使用 Windows 網域帳戶執行,並指定代理程式應以該帳戶身分建立連線。 (這是預設組態。)指定每個「合併代理程式」都應在使用「訂閱者」電腦的使用者之網域帳戶下執行,並指定該代理程式應使用該帳戶進行連線。
如需有關代理程式所需權限的詳細資訊,請參閱< Replication Agent Security Model>。
請指定網域帳戶,此帳戶應與您在指定 [新增訂閱精靈] 的 [網頁伺服器資訊] 頁面中帳戶和密碼,或指定 sp_addpullsubscription_agent 的
@internet_url和@internet_login參數值時,合併代理程式所使用的網域帳戶相同。 此帳戶必須具有快照共用的讀取權限。每個發行集應使用個別的 IIS 虛擬目錄。
SQL Server Replication Listener (Replisapi.dll) 執行時所使用的帳戶也是在同步處理期間連接至發行者和散發者的帳戶。 這個帳戶必須對應至發行者和散發者的 SQL 登入帳戶。 如需詳細資訊,請參閱設定 Web 同步處理的 IIS 中的<設定 SQL Server Replication Listener 的權限>一節。
您可以利用 FTP,將快照集從發行者傳遞到執行 IIS 的電腦。 快照一律透過 HTTPS,從執行 IIS 的電腦傳送給訂閱者。 如需詳細資訊,請參閱透過 FTP 傳送快照集。
如果複寫拓撲中的伺服器在防火牆後面,您可能需要在防火牆中開啟通訊埠,才能啟用 Web 同步處理。
訂閱者電腦會使用 TLS 透過 HTTPS 連線到執行 IIS 的電腦,而這部電腦通常設定為使用連接埠 443。 SQL Server Compact 訂閱者也可透過 HTTP 進行連接,這通常設定為使用通訊埠 80。
執行 IIS 的電腦通常會使用通訊埠 1433 連接到發行者或散發者 (預設執行個體)。 當發行者或散發者為伺服器上的具名執行個體 (此伺服器具有另一個預設執行個體) 時,通常會使用通訊埠 1500 來連接至此具名執行個體。
如果您使用防火牆來隔開執行 IIS 的電腦與散發者,而且使用 FTP 共用進行快照集傳遞,則必須開啟用於 FTP 的通訊埠。 如需詳細資訊,請參閱透過 FTP 傳送快照集。
重要
在防火牆中開啟通訊埠可能會讓您的伺服器面臨惡意攻擊的威脅。 請先確定您已了解防火牆系統,然後再開啟通訊埠。 如需詳細資訊,請參閱< Security Considerations for a SQL Server Installation>。