簡體   English   中英

使用存儲過程或C#同步SQL Server 2014和SQL Server 2014 Express數據庫

[英]Sync SQL Server 2014 and SQL Server 2014 Express database using stored procedure or C#

我有一個C#Windows Forms應用程序(在Visual Studio 2013中編寫),並且在SQL Server(對於主用戶)和SQL Server Express(對於客戶端)中都具有相同的數據庫架構。 每個客戶端的數據庫大小約為2 GB。

我想每天一次或在需要時同步此數據庫。 在SQL Server 2008中,我們使用了RMO,但SQL Server 2012不推薦使用該API。

我嘗試使用T-SQL使用合並復制,並且能夠創建發布,向發布添加文章,創建訂閱服務器,還能夠注冊訂閱服務器以發布,但是數據未同步。

是否有任何適用於SQL Server 2014或更高版本的(合並復制)示例,請提出建議。

謝謝。!

如果您正在尋找事務/合並復制的替代方法,則可以使用Service Broker進行傳輸,並根據存儲過程和觸發器編寫自己的數據傳輸。 在您的情況下(單向)這不是很困難。 我們在生產中使用這種數據傳輸-無需重新初始化訂閱就可以輕松過濾“ subsribers”表數據,並且可以通過Service Broker進行順序數據傳輸。 而且,即使在連接建立后沒有連接服務代理將傳遞消息的情況下,也可以保證數據傳輸。 當您擁有一個SQL Server的付費實例,而其他實例可以是Express時,Service Broker可以正常工作。

這絕不是一個全面的答案,但是它將為您提供一些指導,您可以獨立進行研究。

這是匿名請求訂閱者合並復制的方法:

  • 配置發布者和分發者(在我的示例中為同一SQL Server實例)。
  • 為快照創建一個空的本地Windows目錄或UNC共享(我們將在以后生成它)。
  • 為快照代理(通常稱為“ Snapshot”)創建一個本地/域Windows用戶帳戶,為它提供db_owner訪問將要發布的數據庫的權限,並確保它對已設置的Windows目錄(或共享)具有權限。准備快照
  • (可選)創建一個本地/域Windows用戶帳戶,該帳戶將在同步期間訪問數據庫。 訂閱者上的合並代理將直接模擬該帳戶以連接到發布者,或者訂閱者將連接到您的Web Sync服務器,該服務器隨后將模擬該帳戶連接到發布者。 授予該帳戶db_owner訪問您在發布服務器上的數據庫的權限。 確保此帳戶對快照目錄/ UNC共享具有讀取權限。
  • 使用TSQL或SQL Server Management Studio中的“新建發布”向導創建合並發布。
  • 將文章添加到出版物。
  • 將用戶添加到發布訪問列表(PAL):這應該包括快照用戶和在步驟4中創建的可選Windows用戶。
  • 在發布屬性中,配置快照位置(將其指向在步驟2中創建的本地/ UNC路徑)和快照代理安全性(將其指向在步驟3中創建的Windows用戶)。
  • 通過右鍵單擊SQL Server Management Studio中的發布->“查看快照代理狀態”->“啟動”來生成快照。 等待它成功完成。 使用復制監視器(sqlmonitor.exe)->發布->代理選項卡來調試任何問題。
  • 連接到訂戶服務器
  • 創建一個新的空數據庫(或還原以前在發布服務器上創建的備份-但請記住,如果發布中不同文章之間存在約束(即外鍵),則從備份創建的訂戶數據庫可能會失敗。
  • 運行sp_addmergepullsubscription在新創建的訂戶數據庫上創建匿名請求訂閱
  • 確保訂閱者(或更具體地說,將作為運行Replication Merge Agent的Windows用戶)可以訪問發布者/分發者上的Snapshot目錄/ UNC共享; 或者,您可以將快照(unc)文件復制到訂閱服務器上的本地目錄-在這種情況下,請確保在執行初始同步時為復制合並代理指定AltSnapshotFolder
  • 在訂閱服務器上運行Replication Merge Agent,以交付初始快照並執行第一次同步; 我知道可以通過SQL Server Management Studio做到這一點,但是我個人通常直接調用replmerg.exe 對於SQL Server 2014,您可以在C:\\ Program Files \\ Microsoft SQL Server \\ 120 \\ COM \\ replmerg.exe (在訂閱服務器上)中找到它。
  • 保持定期調用replmerg.exe,以使數據和架構更改在發布者和訂閱者之間流動。
  • 不要忘記記錄replmerg.exe的輸出,因為在分發服務器上的復制監視器中看到的復制歷史記錄遠不及從訂閱服務器上的replmerg.exe得到的准確。

上面粗略地描述了訂閱服務器可以直接連接到SQL Server分發服務器實例的過程。 如果您打算使用Web同步來連接到分發服務器,那將是馴服野獸(尤其是IIS 7或更高版本)的野獸,我將再作討論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM