使用存储过程或 C# 同步 SQL Server 2014 和 SQL Server 2014 Express 数据库

杰梅什

我有一个 C# Windows 窗体应用程序(在 Visual Studio 2013 中编写),并且在 SQL Server(对于主用户)和 SQL Server Express(对于客户端)中具有相同的数据库架构。我的每个客户端的数据库大小约为 2 GB。

我想每天或在需要时同步此数据库一次。在 SQL Server 2008 中,我们使用了 RMO,但该 API 已被 SQL Server 2012 弃用。

我曾尝试使用T-SQL使用合并复制,并且能够创建发布、将文章添加到发布、创建订阅者并能够注册订阅者到发布但数据未同步。

是否有任何很好的例子(合并复制)适用于 SQL Server 2014 或更高版本,然后请提出建议。

谢谢。!

基里尔·施伦斯基

这绝不是一个全面的答案,但它会给你一些指示,然后你将能够独立研究。

以下是如何匿名拉订阅者进行合并复制

  • 配置发布者和分发者(在我的例子中是同一个 SQL Server 实例)。
  • 为快照创建一个空的本地 Windows 目录或 UNC 共享(我们稍后会生成它)。
  • 为快照代理(通常称为快照)创建一个本地/域 Windows 用户帐户,授予它db_owner访问您将要发布的数据库的权限,并确保它对您设置的 Windows 目录(或共享)具有权限准备快照
  • (可选)创建将在同步期间访问数据库的本地/域 Windows 用户帐户。订阅者上的合并代理将直接模拟此帐户以连接到发布者,或者订阅者将连接到您的 Web 同步服务器,然后该服务器将模拟此帐户以连接到发布者)。授予此帐户db_owner访问发布者数据库的权限。确保此帐户对快照目录/UNC 共享具有读取权限。
  • 使用 TSQL 或 SQL Server Management Studio 中的“新建发布”向导创建合并发布。
  • 将文章添加到出版物。
  • 将用户添加到发布访问列表 (PAL):这应该包括 Snapshot 用户和在步骤 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 或更高版本),我将留待下次再说。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

安装SQL Server 2014 Express后找不到本地数据库

SQL Server 2014 Express无法正常工作

SQL Server 2014 Express中缺少SQL Server Management Studio

SQL Server Management Studio 2014:无法在Azure SQL数据库V12上查看存储过程

SQL Server 2014:缓慢的存储过程执行时间

如何自动每秒运行存储过程(SQL Server 2014 Express)?

如何使用SQL Server 2014成功连接到Foxpro数据库文件?

分离数据库后,SQL Server 2014无法登录

SQL Server 2017数据库降级到SQL Server 2014(目标在虚拟机中)

SQL Server 2014 Express上的可用空间

SQL Server 2014和SQL Server 2012

SQL Server 2014 Express设置

无法将C#SQL CLR数据库项目从Visual Studio 2010部署到SQL Server 2014

与SQL Server 2014 Express的部分连接

存储过程错误SQL Server 2014

从Oracle数据库12c访问SQL Server 2014

将.csv文件导入SQL Server 2014数据库

SQL Server 2014 Express中的数据库邮件

SQL 2014-SSIS或存储过程可将数据从SQL Server复制到具有相同表结构的SQL Server

Java SQL Server 2014无法打开数据库错误

c#从SQL Server 2014检索大量数据的更好方法?

SQL Server 2014:使用OpenXML和BulkColumn从XML提取数据

SQL Server 2014 SSIS和SSRS访问

在 SQL Server 2014 中查询 XML 数据

从本地 SQL Server 数据库和 C# 同步实时数据库

SQL Server 2014 Express 性能调整

使用 PHP 连接 Microsoft SQL Server 2014

保持 SQL Server 数据库和 Elasticsearch 索引同步

从 SQL Server 2014 Express 升级到 SQL Server 2017 Express 后,数据库安全配置(登录名等)是否会保持不变?