问题标签 [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 投票
2 回答
2909 浏览

sql-server - 设置 Identity_insert - 合并复制

我在两个数据库之间设置了合并复制,并且在两个数据库上都使用了身份范围。

我想在发布者的合并表中添加特定行(将标识值设置为标识范围之外的内容)。当我尝试这个时,我收到以下错误。

插入失败。它与数据库“xxx”、复制表“dbo.yyy”、列“yyy_id”中的标识范围检查约束冲突。如果标识列由复制自动管理,则更新范围如下:对于发布者,执行 sp_adjustpublisheridentityrange;对于订阅服务器,运行分发代理或合并代理。

有没有办法将特定的身份值强制到使用身份范围管理的合并复制表中?

0 投票
1 回答
1417 浏览

sql-server-2008 - 有没有简单的方法来验证复制文章是否正确?

在出版物(其次是订阅)上,是否有可以运行的脚本或命令来验证当前发布的文章是否符合预期和/或正确?

如果手动对复制数据库进行了更改(即修改或删除了表的“MSMerge_ins_...”触发器,导致该表的复制功能不正确),我想要一种简单的方法来检测它。

我想避免删除整个出版物并重新添加它。如果没有其他选择,那就这样吧。

谢谢!

0 投票
2 回答
2423 浏览

distributed - 同步噩梦——是否可以在没有 IIS 的 2 个 SQL CE 实例之间使用合并复制(或 RDA)?

我们面临以下涉及保持以下同步的问题:

  • 1 台集中式服务器 (IIS / MSSQL 2005)
  • ClickOnce 分发的许多桌面 WPF 客户端
  • 许多移动客户端 - (Windows CE)

替代文字 http://img502.imageshack.us/img502/8246/deployment.png

有了这些棘手的限制:

  • 所有同步关系都是双向的
  • 桌面和移动节点需要离线模式
  • 移动节点无法与中央服务器同步,但要通过 USB 与桌面节点同步。桌面节点充当移动客户端的服务器,而不是中央服务器。然后,来自移动节点的更新需要通过与桌面同步来传播到中央服务器,然后将该桌面与中央服务器同步。

讨厌。

要同步桌面和服务器,我们知道我们可以使用合并复制——服务器作为提供者,桌面作为订阅者,一切都很好。但是同步移动和桌面节点呢?似乎没有 SQL server + ISS,Desktop 不能成为发布者,对吧?我们只能将 MSSQL CE 部署到桌面。

即使是这种情况,一个节点是否可以既是订阅者又是发布者?我怀疑 Merge Replication 体系结构不支持这种安排 - 似乎集线器和辐射是唯一受支持的模型。

我们正在尝试确定是否可以消除 RDA 或合并复制作为可能的解决方案 - 如果可以,我们可能会采用 MS Sync 框架。

也许我们可以考虑其他技术?

谢谢大家,

阿什利

更新:我们刚刚开始玩 MS Sync Framework,它很震撼!

0 投票
1 回答
474 浏览

sql-server-2005 - 复制自定义解析器将空字符串更改为 NULL

我们有一个 C# 应用程序,它发布到一个数据库,该数据库被复制到另一个数据库(使用合并复制),并且有一个自定义解析器,它是一个存储过程。

这在 SQL Server 2000 下工作正常,但是在 SQL Server 2005 下测试时,自定义解析器试图将任何空的 varchar 列更改为空值(并且失败,因为这个特定列不允许空值)。

请注意,这些 varchar 字段不是导致冲突的字段,因为它们在两个数据库上都是空的并且没有被更改并且存储过程不会更改它们(它所做的只是尝试设置另一个货币列的值) .

有没有人遇到过这个问题,或者有一个存储过程的例子,它会留下空字符串?

实际的存储过程相当简单,并在发生冲突时重新计算客户余额。

0 投票
1 回答
491 浏览

sql-server - 在合并复制中重命名 SQL Server 2000 表中没有默认值的 NOT NULL 列

使用sp_repladdcolumnI 可以:
1)添加一个允许空值的列;或
2) 添加一个具有不允许空值的默认值的列。

在不删除和重新创建整个订阅的情况下,我想:
3)添加一个没有默认值且不允许空值的列。

这可能吗?


我意识到我需要先用数据填充列,然后才能将其设置为 NOT NULL。正如标题所示,我真正想做的是重命名一个现有列:a)其中有数据,b)设置为 NOT NULL,c)没有默认值。

0 投票
2 回答
2397 浏览

sql-server - SQL Server 合并复制问题

我在 CRM 系统上设置了合并复制。销售代表数据在连接到网络时合并(我认为当 SQL 检测到笔记本电脑已连接时),然后他们将笔记本电脑拿走并在他们回来时再次合并(总共大约 6 台笔记本电脑通过 1 个服务器合并)。

该系统在最初设置时似乎很好,但在大约一个月过去后几乎停止,合并作业需要近 2 小时才能运行,每个用户,服务器没有任何挣扎。

如果我删除整个出版物并重新创建所有订阅,它似乎可以正常工作,直到大约再过一个月,然后我又回到了同样的问题。

该数据库设计不佳,缺少主键/索引等,但最大的表中只有大约 3000 行。

有谁知道为什么会发生这种情况,以及在删除和重新创建出版物时是否存在丢失数据的风险?

0 投票
2 回答
9094 浏览

sql-server - 更改列约束 null/not null = rowguid 复制错误

我有一个使用合并复制在 Sql server 2005 下运行的数据库。我想将一些 FK 列更改为“非空”,因为它们应该始终具有值。SQL server 不会让我这样做,这就是它所说的:

  • 无法修改表。删除合并复制使用的 rowguid 列上的默认约束是无效的。执行内部复制过程期间架构更改失败。有关纠正措施,请参阅此错误消息随附的其他错误消息。事务在触发器中结束。该批次已中止。

我根本不想改变对 rowguid 列的约束,只是在充当 FK 的另一列上。我想设置为不为空的其他列,因为没有该信息(即关于客户,客户名称)的记录没有任何意义。

问题:有没有办法在不关闭复制然后重新打开的情况下将列更新为“非空”?这甚至是最好的方法吗 - 我应该使用约束吗?

0 投票
1 回答
821 浏览

sql-server-2005 - 如何以编程方式启动 SQL Server 2005 合并复制

我们目前设置了合并复制来合并两个数据库之间的某些表。我需要以编程方式启动其中一个出版物,以确保在开始某项工作之前数据已同步。SQL Server 联机丛书并没有太大帮助。

到目前为止,我唯一想到的就是使用 sp_start_job 来启动合并复制 sql 作业。这样做可以吗?

还有其他方法可以以编程方式开始同步发布吗?

0 投票
1 回答
336 浏览

sql-server - 仅在 Publisher 上运行的 SQL 触发器

我有一个内部应用程序,它同时具有 Web 界面和桌面界面(是使用 Merge Replication 的 OCA)。我们仍在使用 SQL 2005 并设置了许多“存档”表。这些由相关的 Triggers 填充TabletblPersonArchivefortblPerson等。为了使复制集尽可能小,我想从复制中排除所有存档表。

从业务的角度来看,这不应该是一个问题,因为用户永远不会直接访问这些数据。从字面上看,它不需要存在于使用复制的桌面应用程序上。

那么,我想弄清楚的是我如何做到这一点。我的“猜测”是我设置Publication Properties --> Article Properties --> Copy User Triggers = FALSE 了存档表,然后从复制集中排除了存档表。从理论上讲,触发器仍然会触发,因此仍然会通过 Web 应用程序和复制维护存档表。

不幸的是,这只是一个猜测,我希望在投入之前能得到一点保证。

0 投票
1 回答
416 浏览

sql-server-2008 - 长期合并

当我在不同系统中的数据库之间进行同步时,我在复制监视器中收到“长时间运行的合并”警告。由于我的数据库包含数十万条记录,因此执行需要一些时间,这会导致警告为“长时间运行的合并”。

它会影响记录转移还是我应该忽略警告?

需要采取什么步骤?

此警告的解决方案是什么?