SQL 事务复制快照未应用

SQL 事务复制快照未应用

我使用 SQL 事务复制和拉取订阅将数据库(托管自己的分发数据库)从 VPN 上的多台服务器复制到中央服务器。前两个数据库运行良好,但第三个数据库却给我带来了问题。

我的订阅服务器是 SQL 2008,源系统都是 SQL 2005。源数据库大小为几百 MB,包含审计数据,因此只是以每秒约 1kb 的速度缓慢添加新记录。

就复制监视器而言,代理日志和事件日志显示一切正常 - 除了我的订阅数据库中没有出现任何数据。

分发代理似乎不想从发布者读取快照(因此也不想读取初始状态和架构)。新事务似乎确实正常到达,但未应用,因为复制监视器显示“已交付 5 个事务和 10 条命令”。我希望(像以前一样)在复制监视器中看到有关数据被 BCP 的语句。

快照位于发布者的共享文件夹上。订阅者可以正常查看快照 (\\repldata),并且 alt 快照文件夹指向它。但分发代理似乎没有尝试读取它。我尝试将快照路径更改为不正确的内容,甚至没有收到无法访问的错误提示。

经过大量的谷歌搜索等,我发现 sp_MSget_repl_commands 由发布服务器上的分发数据库上的订阅服务器调用。运行分析器后,我可以看到它只针对一个代理 ID 进行调用。重新启动后,它会按预期针对序列号 0x0 进行调用,所以我认为这意味着它会查找快照。

但是,查看发布者时,我发现有两个代理的数据 - 快照代理和日志读取器代理(正在查询)。所以我想我需要告诉分发代理获取两者的数据。但是怎么做?更重要的是 - 为什么?它在我复制的另外两台服务器上运行良好。

我不是 SQL 新手,但这几乎是我第一次尝试复制,所以不要害怕指责我错过了一些明显/愚蠢的东西!

如果您愿意,我可以获取日志文件(例如从分发代理),但它们似乎没有任何错误 - 它只是启动并开始应用日志读取器代理更改。

干杯,戴夫

答案1

检查发布属性-->快照-->快照文件的位置--确保将文件放入默认文件夹已被选中,在我的情况下它没有被选中,而是将文件放入以下文件夹中并使用位置地址(C:\REPL)进行了检查,但我的分销商位于发布商以外的其他服务器上,并且位置地址会误导分销商代理。

答案2

我已经重做了第四次,现在终于可以正常工作了 - 但令人恼火的是,我并不清楚该如何做。

我唯一能看到的不同是快照和日志读取器代理以域管理员而不是本地管理员身份运行。我认为这不会有什么区别,但是没有任何错误消息,很难分辨……

相关内容