标签: merge-replication

使用 T-SQL 的复制监视器信息

下图显示了我目前正在调查的事务复制问题。

该图像来自复制监视器。

如何使用 T-SQL 获取此信息?

在此处输入图片说明

replication sql-server-2005 sql-server merge-replication transactional-replication

13
推荐指数
1
解决办法
2万
查看次数

将 SQL Server 2005 升级到 SQL Server 2012

我有一个测试环境,设置如下:

  • 虚拟机 (Hyper-V)
  • Windows Server 2008 R2 SP1(x64 位)
  • Windows SQL Server 2005 Developer Edition SP4(x64 位)(默认实例名称)
    • 1 个带有合并复制的数据库设置... 3 个出版物,每个出版物有 2 个订阅者。

我们正在测试升级到 SQL Server 2012 Developer Edition (sp1) 的过程...

我已经下载了 64 位 SQL Server 2012 Dev 的 iso。(sp1) 来自 MSDN(完整许可副本),并已开始走上升级之路。在开始检查不同标准的最后阶段之一,我们遇到了一个奇怪的问题,如下所述:

Rule "Upgrade architecture mismatch" failed. The CPU architectures of upgrading feature(s) are different. To upgrade these features, Setup architecture must be the same as the features being installed.
Run Code Online (Sandbox Code Playgroud)

此外,在升级日志文件中,我发现了以下(更详细的)输出:

(03) 2012-12-28 14:02:45 Slp: Init rule target object: Microsoft.SqlServer.Configuration.SetupExtension.BlockMixedArchitecture …
Run Code Online (Sandbox Code Playgroud)

replication sql-server-2005 sql-server sql-server-2012 merge-replication

12
推荐指数
1
解决办法
6955
查看次数

如何正确解决合并复制错误冲突

我们有 SQL Server 2008 R2 合并复制设置。

最近我开始遇到一些表的冲突,当我检查冲突查看器时,我可以看到获胜者和失败者列的值是相同的!

我确信只有一位订阅者输入了这些数据。

我曾经sp_showrowreplicainfo获得有关冲突行的更多详细信息,我得到了 2 行:一个用于发布者,另一行用于订阅者,两行的“版本”均为 1。

我还实现了 Brandon 的方法:Auditing changes in Merge Replication,但它只显示正常插入!

你能告诉我如何开始解决这种冲突吗?

sql-server sql-server-2008-r2 merge-replication

12
推荐指数
1
解决办法
1000
查看次数

使用函数调用的估计与实际查询计划

我在 SQL 服务器上有这个查询,一个合并复制查询:

SELECT DISTINCT
    b.tablenick,
    b.rowguid,
    c.generation,
    sys.fn_MSgeneration_downloadonly
    (
        c.generation,
        c.tablenick
    )
FROM #belong b
LEFT OUTER JOIN dbo.MSmerge_contents c ON 
    c.tablenick = b.tablenick
    AND c.rowguid = b.rowguid;
Run Code Online (Sandbox Code Playgroud)

估计的查询计划包括 3 个查询的信息:

  1. 上面的查询
  2. 对 fn_MSgeneration_downloadonly 的函数调用
  3. fn_MSArticle_has_downloadonly_property 的函数调用

实际的查询计划仅包括以下信息:

  1. 上面的查询

没有关于功能。为什么实际方案中缺少功能信息?

我尝试了这些选项:

SET STATISTICS PROFILE ON
SET STATISTICS XML ON
Run Code Online (Sandbox Code Playgroud)

它创建了一个实际计划,但它缺少第 2 部分和第 3 部分,这与我在 Management Studio 中使用实际查询计划选项时相同。

例如,如果我要使用 Profiler 来捕获有关函数调用的信息,我会选择哪些事件?


没有找到与查询计划特别相关的答案,但我分析了 SP:StmtStarting 和 SP:StmtCompleted 并显示了函数调用。

sql-server execution-plan functions merge-replication

11
推荐指数
1
解决办法
2172
查看次数

合并复制文章数量的硬限制?

一点背景。我们开发了一个使用合并复制的应用程序。目前,我们目前发布了大约 212 篇文章,一切都很好,因为它似乎属于 256 篇文章的数量限制。(在服务器上使用 SQL Standard 2005,在订阅者级别使用 2005 Express。)

我们正在开发一个新版本,一个从头开始构建的新数据库,它的最低系统要求是 SQL 2008 R2 Standard 服务器端和 Express 2008 R2 客户端,这似乎也有对已发表文章的计数限制相同 256。(是的,我们也将支持 2012,但它的限制是相同的)

问题在于我们在新版本中成功测试了 400 多篇文章,并且所有内容都进行了功能测试(发布创建、快照和订阅者创建以及复制本身)。之前有没有其他人超过计数限制,这只是一个软推荐限制吗?我们没有看到任何错误,无论是在发布创建过程中,还是在订阅者创建过程中。

根据这篇文章:http : //msdn.microsoft.com/en-us/library/ms143432%28v=sql.105%29

我正在等待微软的回电,但我想知道是否有人以前在任何版本的 SQL 中看到过这个。

sql-server-2005 sql-server-2008 sql-server merge-replication

10
推荐指数
1
解决办法
1724
查看次数

PK 作为 ROWGUIDCOL 还是使用单独的 rowguid 列?

这里正在进行一场冗长的辩论,所以我想听听其他意见。

我有许多带有 uniqueidentifier 聚集 PK 的表。这是否是一个好主意超出了这里的范围(并且不会很快改变)。

现在,必须合并发布数据库,并且 DEV 提倡使用单独的 rowguid 列,而不是将现有的 PK 标记为 ROWGUIDCOL。

基本上,他们说应用程序永远不应该将仅由复制使用的东西带入其域(这对他们来说只是“DBA 的东西”)。

从性能的角度来看,我认为没有理由添加一个新列来做一些我可以用现有列做的事情。而且,既然只是“DBA 的东西”,为什么不让DBA 选择呢?

我有点理解 DEV 的观点,但我仍然不同意。

想法?

编辑:我只想补充一点,我在这场辩论中是少数,质疑我立场的开发者是我尊重和信任的人。这就是我求助于征求意见的原因。
我也可能遗漏了一些东西,并且可能误解了他们的观点。

database-design sql-server merge-replication

9
推荐指数
3
解决办法
3462
查看次数

SQL Server 分发数据库日志文件在完整数据库备份后不受控制地增长

我们有一个合并复制环境,它正在推送到 8 个订阅者。这工作正常。我们的分发数据库设置为简单恢复模式。我们有一个维护计划,将在每天 00:30 备份所有数据库。此过程完成后,分发日志文件会在接下来的 30 分钟内增长并吸收硬盘驱动器上的所有剩余空间(约 90GB)

然后发生的情况是分发数据库显示为“Recovery Pending”,在重新启动机器之前我们无法做任何事情。在此之后,我可以将日志文件缩小到 2MB。

我不知道为什么会这样。日志文件在白天以大约 10MB 的速度运行。数据库大小为 15GB。

sql-server backup merge-replication log

8
推荐指数
1
解决办法
8355
查看次数

SQL Server 复制替代软件

我们已经使用 SQL Server Replication 很长时间了,但遇到了一些问题,有时我们需要重新初始化订阅以解决一些问题,而有时我们需要破坏整个复制结构并重新重建它!

我们主要担心的是,一旦我们遇到复制问题,几乎所有时间的简单解决方案都是重新初始化我们的业务需求不接受的复制。

现在我们正准备发布一个新的大项目,我们正在尝试寻找用于 SQL Server 复制的 3rd 方软件。

我们的设置包括分布在分支机构(不同国家/地区)的服务器 + 移动客户端(具有本地 SQL Server 数据库的笔记本电脑),我们需要在所有这些之间复制数据并提供文章过滤功能。

有人可以为我们建议一些替代解决方案吗?

replication sql-server merge-replication

8
推荐指数
1
解决办法
1444
查看次数

BLOB 合并复制期间临时数据库磁盘 I/O 高

有一个用于复制 BLOB(类型image)的合并发布,对于我的数据大小获得了非常高的 tempdb 磁盘 I/O。出版物仅供下载,没有过滤器。

高磁盘 I/O 是由同步引起的(当没有订阅者同步时,一切正常),与订阅者数量密切相关。即使在同步之间发布者上没有更改数据时也会发生这种情况,这让我很困扰。

  • 复制表大小:7MB(总行数约为100)
  • tempdb I/O :写入约 30 MB/秒(日志和数据文件)
  • 订阅者数量:略高于 100,每个订阅者每 30 分钟同步一次(或多或少均匀)。
  • 保留期设置为 14 天

在发布服务器上使用 SQL Server 2008,在订阅服务器上使用 SQL Server 2005-2008R2。所有订阅者都使用 Web 同步。

此外,订阅者的同步需要很多时间,多次出现replmerg.log如下:

DatabaseReconciler, 2015/04/21 12:13:40.348, 3604, 25088,  S2,  
INFO: [WEBSYNC_PROTOCOL]  
Sending client ReconcilerPhase WebSyncReconcilerPhase_RegularDownload     

DatabaseReconciler, 2015/04/21 12:13:47.063, 3604, 25194,  S2,  
INFO: [WEBSYNC_PROTOCOL]  
Received server ReconcilerPhase WebSyncReconcilerPhase_LastRegularDownload
Run Code Online (Sandbox Code Playgroud)

试过@stream_blob_columns打开和关闭没有效果。

问题是:这是个好主意,用合并复制到这些斑点发送到用户?我们还有其他出版物(尽管它们没有 BLOB 列),其中包含大量数据而没有 tempdb 问题。是 SQL Server 缺陷还是设置不当?

发布者和分发者在同一个实例 SQL Server 2008 SP4 上,无法确定订阅者,其中一些可能不是最新的。无论如何,如果它似乎有帮助,我可以准备一个测试环境,其中几乎没有订阅者拥有受控版本。

确认,由于执行sys.sp_MSenumgenerations90 …

performance sql-server merge-replication

8
推荐指数
1
解决办法
1150
查看次数

为什么复制删除需要系统管理员访问

我正在使用 SQL 2012 运行合并复制。

在 SQL 2012 中为复制添加的删除触发器似乎有一个令人讨厌的后果。

在删除触发器里面是这样的,

select @xe_message = CAST('replica_id: ' + convert(nvarchar(100), @replnick) + ', article_id: ' + convert(nvarchar(100), @tablenick) + ', rowguid: ' + case when @article_rows_deleted = 1 then convert(nvarchar(100), @rowguid) else N'0' end + ', generation: ' + case when @is_mergeagent = 1 then N'0' else convert(nvarchar(100), @newgen) end + ', Reason: -1' AS varbinary(1000));
        exec master..sp_repl_generateevent 1, N'Event : ppm_insert', @xe_message
Run Code Online (Sandbox Code Playgroud)

如果某人不在系统管理员角色中进行删除,则会发生错误,

Msg 8189, Level 14, State 10, Procedure sp_repl_generateevent, Line 1 …
Run Code Online (Sandbox Code Playgroud)

replication sql-server merge-replication

7
推荐指数
1
解决办法
1207
查看次数