繁体   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