问题标签 [merge-replication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
419 浏览

sql - 在订阅者上更新过滤的复制行失败

我有一个包含 1 个分发者/发布者和许多订阅者的合并复制方案。只有少数文章未经过滤,其他所有文章都由 HOST_NAME() 过滤,从而创建不同的(非重叠)分区。我也尝试通过 SUSER_NAME() 过滤无济于事。

过滤和分发工作完美,但在订阅者上更新失败并显示以下错误消息:

无法更新项目“%s”中的列。文章的 partition_options 属性值为 2 或 3(非重叠分区),并且列涉及行过滤器和/或连接过滤器。在这种情况下,无法在订阅者或重新发布者处更新该列;它必须在顶级 Publisher 更新

它失败的文章的 partition_options-setting 为“Nonoverlapping, single subscription”。我尝试执行的 SQL 是几个 nvarchars 和位的简单参数化 UPDATE。

有人知道我错过了什么吗?不可能很远...

编辑:SQL Server 2008 R2 顺便说一句。

0 投票
1 回答
975 浏览

sql-server - 如何复制两个结构不同但字段相同的表?

我在不同的位置有两个 SQL 服务器数据库。我想做一些类似复制的事情。这是我的场景:在第一个数据库中,我有一个具有以下结构的表:

在第二个数据库中,我有下表:

如您所见,我在两个不同数据库中的表的结构并不相同。但我只想复制State and city字段。如果state and city在第一个数据库中更改了第二个数据库,则必须更改,反之亦然。我该怎么做?我可以通过复制来做到这一点吗?怎么做?

0 投票
1 回答
6638 浏览

sql-server - 在具有不同名称和不同列名的两个表之间进行复制。是否可以创建这样的复制

我有一个要求,我在两个具有不同名称且具有不同列名的表之间创建复制。是否可以创建这样的复制。

我想配置复制,以便将 A 列数据复制到 D 列,将 B 列数据复制到 E 列,将 C 列数据复制到 F 列

0 投票
1 回答
473 浏览

sql-server-2008 - 在 MergeReplication 中将架构更改和数据从发布者移动到订阅者

我有一个公司服务器和大约 50 个远程客户端。图像被添加到 Remoteclients,这些图像被合并复制到 CorporateServer。现在最初所有这些图像都在 BLOB 上。我们决定使用 filestream 并创建一个包含 Image 二进制文件的新表。因此,我们将原始图像表分区为图像和新表 Image_Source。这是在生产中,公司数据大小为 250 GB。

现在我们有以下表格:-

  1. 图片
  2. 图片_来源

我必须做以下事情。

  1. 将此新表添加到发布者并将其合并复制到订阅者。
  2. 从 Images 中复制所有图像 blob 并将其传输到 Images_Source。

为了实现这一点,我将做以下事情:-

  1. 将新表添加到企业上的 Publisher 并将 Replicate Schema Changes 设置为 True。这样,架构将在公司和 RemoteClients 之间同步。
  2. 现在在公司,我将禁用 Images_Source 表的触发器,并使用 Job 将数据从 Images 移动到 Images_Source 表。
  3. 一旦所有数据都存在于 Images_Source 表中,所有订阅者将同步。

现在我想要一些关于进行这种更改的正确程序的专家建议。如果你们可以在执行此类更改之前分享您的经验和要记住的事情。

0 投票
0 回答
1552 浏览

sql-server - 在具有自动身份范围管理的合并复制中允许非 db_owner INSERT 权限

我有对表具有 INSERT 权限的用户。他们可以在发布者上插入记录,直到表的主要范围用完。然后他们每次尝试执行 INSERT 时都会收到此错误:

[Microsoft][ODBC SQL Server Driver]小数截断
[Microsoft][ODBC SQL Server Driver][SQL Server]插入失败。它与数据库“TaxDB”、复制表“dbo.ClientHistory”、列“ClientHistoryID”中的身份范围检查约束冲突。如果标识列由复制自动管理,则更新范围如下:对于发布者,执行 sp_adjustpublisheridentityrange;对于订阅服务器,运行分发代理或合并代理。
[Microsoft][ODBC SQL Server Driver][SQL Server]语句已终止。ODBC--在链接表“ClientHistory”上插入失败。

根据 SQL Server 2008 R2 的MS 文档

如果 Publisher 在插入后用尽了它的标识范围,如果插入是由 db_owner 固定数据库角色的成员执行的,它可以自动分配一个新的范围。如果插入是由不属于该角色的用户执行的,则日志读取器代理、合并代理或属于 db_owner 角色的用户必须运行sp_adjustpublisheridentityrange (Transact-SQL)

所以文档说用户必须是“db_owner”角色的成员,但他们没有说明原因。以下是自动生成的 MSmerge_ins 触发器之一中适用的 T-SQL 部分:

我想为对表具有 INSERT 权限(但权限有限)的用户提供从主要身份范围切换到辅助身份范围的能力。使这些用户成为“db_owner”不是一种选择。但是,给他们有限的额外权限当然是可能的。我只是不知道这些权限是什么。

由于自动标识范围管理在 SQL Server 2008 合并复制中默认打开,我错误地认为它会“开箱即用”。我开始认为我最好还是回到 NO 身份范围管理。真的,我只是希望我的用户能够插入记录,而无需管理员一直介入。

0 投票
1 回答
258 浏览

sql-server - 良好的安全实践和自动身份范围管理是否相互排斥?

我正在尝试使用Automatic Identity Range Management。但是,确保我的用户可以在具有标识列的表中插入记录的唯一方法是使它们db_owner. 我错过了什么吗?


有关完整背景,请参阅我之前的问题: Allow non-db_owner INSERT permissions in merge replication with auto identity range mgmt

0 投票
1 回答
1075 浏览

sql-server - 为什么有人应该将身份范围管理与 SQL Server 一起使用

几年前我开始从事复制工作时,我确信身份范围管理仅在最近的 SQL Server 中用于遗留用途,因为在 SQL Server 2000 之前,GUID 类型字段不存在并且大多数主键是建立在自动增量字段上。

我已经看到其中一些数据库“在工作”,我可以说在复杂的复制拓扑中管理这些身份范围可能是一个真正的 PITA,肯定会让人头疼,而且需要通宵达旦的调试会话。

我刚刚在这里读到,身份范围管理仍然被提议作为 SQL Server 2008 的默认设置,然后是关于最佳实践和身份范围管理的另一个问题,其中 #mwolfe02 得出的结论是,在某些情况下,用户无法在数据库中插入数据除非他们被授予数据库所有者的权利!

令人不安,不是吗。那么,除了遗留数据库之外,为什么有人应该将身份范围管理与 SQL Server 一起使用?以更通用的方式,为什么有人会在数据库中推广任何预定\自动增量识别方法?

0 投票
1 回答
575 浏览

sql-server - 在合并复制中重命名订阅数据库

我想在合并复制中重命名订阅数据库。所有订阅都正确同步。

是否可以重命名订阅数据库之一?

0 投票
1 回答
1524 浏览

replication - RFI:从 SQL 复制转移到 MS 同步

我们正在考虑用另一种技术替代 SQL 复制,可能是 MS SYNC。我们正在为多个数据中心之间的大型 SAAS 应用程序同步数据和模式,并且需要高可用性、可靠性和性能。

问题:

  1. 有没有人有从 SQL 复制迁移到 SYNC 的经验,如果有,你的经验是什么?
  2. SYNC 的性能和可扩展性注意事项/限制是什么?
  3. 你会为这种情况推荐 MS Sync 吗?

这是发布在这里,而不是服务器站点,因为开发人员很可能会体验到编码、测试和性能操作。

0 投票
1 回答
309 浏览

sql-server - SQL 合并复制中“逻辑记录”的未来

我正在构建一个新的应用程序,它将在非常糟糕的网络上使用 SQL 合并复制。看来“逻辑记录”功能将极大地帮助解决这些网络问题,确保我们可以在单独的事务中一个一个地复制完整的“实体”,而不是逐个表地复制。

但是,文档指出

此功能将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。

我在文档中找不到的是关于应该使用什么来获得类似功能的建议。有这样的推荐吗?如果不是官方建议,人们自己想出了什么?