问题标签 [transactional-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 投票
0 回答
555 浏览

sql-server - TSQL 复制 sp_addsubscription、sp_link_publication 死锁

在以编程方式设置推送复制时,我注意到在运行 sp_link_publication 时出现死锁。死锁似乎与触发顺序有关。

这是我认为出了问题的地方:

使用 sp_addsubscription

使用 sp_addpushsubscription_agent

使用 sp_link_publication

sp_addsubscription 将 [trg_MSsync_del_...] 之类的触发器添加到我的数据库表对象中。然而,当这种情况发生时,我认为命令 sp_link_publication 会发生冲突并形成死锁。有人对此有任何经验/建议吗?

我可以看到通过查询添加的触发器:

添加所有触发器后,如果我运行 sp_link_publication,则不会出现死锁。

有任何想法吗?

0 投票
1 回答
418 浏览

sql-server - 事务复制失败

我在 sql server 事务复制中遇到问题,无法找到它的根本原因。首先,让我告诉你,我不是 DBA,所以我可能对一些 DBA 概念很笨。我是 .Net 开发人员,我负责设置复制。

我在总部有一个数据库,并将几个表复制到零售店的另一台服务器。第一次,我用选定的文章配置了复制。复制是连续的。它运行良好,但在一个星期天晚上,它因错误“进程无法执行'sp_replcmds'”而失败。在谷歌上花了一段时间后,我找不到任何解决方案。所以,我重建了复制,但这次复制被安排(每 15 分钟),我也将它配置为 PULL 而不是 PUSH。它开始了,但下个星期天晚上又坠毁了。因此,我分析了在周日晚上,我已经在数据库上配置了重新索引作业,并且由于恢复模型已满,它正在生成一个非常大的 TLOG,而 Repolication 代理无法解析它。现在,第三次,我再次重建了复制,这次我安排了每 15 分钟一次的复制,但是从早上 8:00 到晚上 11:30,因为在 11:30 之后,没有商店进行任何交易。此外,对于重新索引作业,我又添加了 2 个步骤。在重新索引之前,我将恢复模型更改为简单,然后重新索引,之后我将恢复模型更改回完整。无论重新索引步骤的结果如何,我都将恢复更改为完全。此设置运行良好,并且正常运行了大约 2 个月。无论重新索引步骤的结果如何,我都将恢复更改为完全。此设置运行良好,并且正常运行了大约 2 个月。无论重新索引步骤的结果如何,我都将恢复更改为完全。此设置运行良好,并且正常运行了大约 2 个月。

现在,2 个月后,又是一个星期天晚上,它失败了,原因相同(“进程无法执行 'sp_replcmds'”)。实际上,我已经安排了备份工作,我每天都进行完全备份,每 15 分钟进行一次日志备份,没有差异备份。之后,发现我没有配置差异备份,我也配置了相同的(每 6 小时一次)。但是,在配置差异备份后,周日晚上复制失败。

现在,任何人,请帮助我为我的场景推荐设置。我的设置是 sql server - Windows Server 2008 R2 Distributor 和 Publisher 上的 SQL Server 2008 R2 Enterprise 在同一台机器上。订阅者位于零售商店服务器上。

0 投票
1 回答
270 浏览

sql-server - Execute a stored procedure after transactional replication

I'm trying to create a snapshot of a database that I will use for reporting. The requirements are to capture specific tables in the production database. Afterwards, I need to execute a stored procedure that will normalize a particular table column (also captured from the snapshot) that has XML data. I also need to keep track of that normalized data to the snapshot using a primary key.

I have no issues in parsing the XML, I do XQuery a lot. The challenge for me is to execute this in a scheduled task that runs on specific hours. So I'm reading through documentation about Transactional Replication. I hope I'm on the right track.

Another limitation is to support MS SQL 2005 databases, so I would need a solution that is backward compatible to that as well. Most of the solutions I've seen on the web requires a lot of physical tinkering in the management studio, perhaps, you can guide me how I could script that for automated deployment?

I hope you guys can guide me to the best solution. I can always use MERGE scripts but if there's a more standardized way, I'm up to it.

0 投票
1 回答
866 浏览

sql-server-2008-r2 - 复制出错

我的一个事务复制开始抛出错误:

ALTER TABLE 语句与 FOREIGN KEY 约束“FK_Name”冲突。冲突发生在数据库“Database”、表“dbo.table”、列“ID”中。(来源:MSSQLServer,错误号:547)

我已经foreign key从发布者和订阅者中删除了约束,创建了一个新快照并重新初始化了复制,但我仍然遇到同样的错误。

经过一番搜索,我发现有三个表,由复制(在订阅者上)创建:

在其中两个表中,我看到了参考已删除的行FK
我从这些表中删除了行,但仍然出现错误。

知道如何解决这个问题吗?

0 投票
1 回答
1331 浏览

sql-server - 从两个订阅者的备份中恢复复制

您好有一个大数据库(~30GB),我需要将其复制到两个不同位置的两台服务器。我启用了复制并启用了“允许从备份初始化”并执行了以下步骤:

  1. 备份主服务器上的数据库
  2. 将备份文件复制到 server1。
  3. 恢复 server1 上的数据库
  4. 在主服务器上添加订阅。

从主服务器到 server1 的复制工作正常。

  1. 在主服务器上进行了新备份。
  2. 在 server2 上复制和恢复
  3. 在 server2 上添加订阅者(使用 sp_addsubscription)

警告:分发代理作业已隐式创建,并将在 SQL Server 代理服务帐户下运行。作业“XXX-181”已成功启动。消息 21397,级别 16,状态 1,过程 sp_MSsetupnosyncsubwithlsnatdist,第 248 行 同步从指定备份创建的 nosync 订阅所需的事务在分发服务器上不可用。使用更新的日志、差异或完整数据库备份再次重试该操作。订阅者被删除。

我做错了什么?我必须为两台服务器使用相同的备份文件吗?谢谢

0 投票
0 回答
718 浏览

sql-server - 在大型数据库上启动复制时出现问题 - SQL 2012

我已经与 SQL Server 斗争了一周,试图启动并运行复制,现在我意识到很可能我做错了什么,我希望你们中的一个人能帮助我指出正确的方向。

我想在我的实验室环境中开始复制一个大型(180GB)数据库,每次最终结果都是“应用复制命令时在订阅服务器上找不到该行”类型的错误时。(来源:MSSQLServer,错误号: 20598)"。

有多个数据库要复制,较小的数据库 (<= 4GB) 启动时没有问题,一个 21GB 的中型数据库有一个类似的错误,自从我发现并将丢失的数据插入到订户数据库。

几个事实:
- 由于发布者是镜像数据库,因此我已将分发者设置为远程分发者。
- 我认为分配器设置是好的,因为所有复制的数据库都采用相同的“路径”并且较小的数据库正在工作。
- 分发者和订阅者设置在同一台服务器上。
- 总而言之,以下过程大约需要 3.5-4 小时。
- 数据库在完全恢复模式下运行
- 在此期间,发布者上的所有日志备份都将关闭。

这是我所做的:
在发布
者上 创建出版物并添加所有文章

在发布
者上, 我重新编译了订阅 SP,因为我曾经遇到过它们的问题。
我使用以下语句的输出:

在发布者上,
我备份数据库和日志

在订阅者
上 从发布者复制备份

在订阅服务器上
恢复数据库和日志备份

在订阅者上
删除所有触发器,因为我注意到它们干扰了复制 SP

在发布者上
添加订阅和推送代理

最糟糕的是,这只是一个 LAB 系统,当我将它应用到 Live 时,我将不得不处理每天 10,000 多笔交易的 24/7 环境,所以停机时间是绝对不行的。

如果您缺少任何详细信息,请随时询问,我很乐意提供我所拥有的所有详细信息。

祝你有美好的一天

DS

0 投票
1 回答
889 浏览

sql-server - SQL Server 复制和应用程序查询/更新冲突导致死锁

我们最近升级到 sql server 2012。我们将 xxx-D-011 作为 OLTP 服务器,将 yyy-D-011 作为分发服务器。该日志每天都显示应用程序查询/更新和复制作业之间的死锁。

下面包含有关死锁的日志片段。任何可以帮助我完成后续步骤的评论/想法将不胜感激。谢谢!

0 投票
2 回答
4808 浏览

sql-server - 如何从 Microsoft Sql Server 数据库中删除所有事务性发布?

我的数据库有很多使用 Sql Server 复制的表的订阅者。

当我尝试删除参与已发布数据库订阅的数据库中的表或列时,数据库迁移失败。

这些订阅者检查他们的发布是否仍然有效,如果没有,他们会重新订阅。

我需要通过 T-SQL 从当前数据库中删除所有发布,因此当我自动执行数据库迁移时,会删除列或删除表,而不会导致迁移失败并且需要手动干预。

0 投票
0 回答
204 浏览

sql-server - 具有可更新订阅的事务复制中的数据不匹配

复制冠军,

我有一个具有可更新订阅设置的事务复制,具有 1 个发布者和 3 个订阅者。所有服务器都是 SQL 2008,并且将冲突解决策略设置为订阅者获胜。最近,我一直在观察几个表的数据不匹配。但是复制运行良好,没有任何问题。我正在尝试了解可能导致此问题的原因以及将来如何避免此问题。

有人对此有任何想法吗?还有可能重现这种情况吗?如果您需要更多详细信息,请告诉我。

0 投票
2 回答
1685 浏览

sql-server-2012 - 在 SQL Server 2012 中手动而不是自动触发复制更新

我已经在 SQL Server 2012 中设置了事务复制,它工作正常(几秒钟后更新)但是是否可以编辑我的复制以仅在我“按下按钮”而不是自动触发时触发?