SQL Server复制本地订阅属性返回“无法将值'null'应用于属性ServerInstance:Value不能为null。”

问题描述 投票:3回答:6

我正在将SQL 2008 R2数据库复制到SQL 2016数据库。

当我使用SSMS连接到SQL 2016数据库时,在对象资源管理器中选择Replication-> Local Subscription-> MySubscription然后右键单击并选择属性我得到错误“无法将值'null'应用于属性ServerInstance:Value不能为null。 ”。

它是什么意思,我该如何解决?我使用我的Windows域用户登录,这是两个系统上的系统管理员。

sql-server ssms sql-server-2016 transactional-replication
6个回答
2
投票

从SQL 2016开始,已引入更改以支持Tran Replication的内存优化订户。 SSMS中的这个错误是该变化的回归。

在订阅属性表单中,添加了一个新条目以显示它是否是内存优化的订阅。此信息从分发服务器获取。

因此,对于推送订阅,如果订阅者是SQL 2016或更高版本,如果您尝试查看订阅服务器的订阅属性,则分发服务器将返回为NULL,因为它无法访问/连接到分发服务器。这就是您收到此错误的原因。

在修复此问题之前,您可以从发布方查看订阅属性。


0
投票

我刚才遇到了同样的问题,我的复制发布者和发行商在SQL Server 2014上,而我的订阅者是SQL Server 2016.当我尝试使用SSMS 2016时,我遇到了同样的问题,但是当我使用SSMS 2014时,一切正常,所以这是非常的可能是因为SSMS的版本。尝试使用发布者(源)正在使用的SSMS版本。


0
投票

当所有服务器都在相同版本的SQL上时,我遇到了这个问题。我在某处读到,如果分发服务器和发布者之间存在三个以上版本的SQL(而且订阅者取决于复制类型),则复制将不起作用,但我通过使用较低的数据库兼容级别解决了这个问题。

在我目前的设置中,一切都是SQL 2016.我遇到了同样的问题,并通过为订阅者和发布者创建链接服务器来修复它。这些应该在设置期间创建,所以我不确定它们为什么不是。

我从分发服务器编写了链接服务器repl_distributor以及发布者的链接服务器,然后在订阅服务器上运行这些脚本。然后修复了这个问题。

我希望这也适合你(虽然你的问题很久以前所以你现在可能还好!)。


0
投票

检查链接服务器“服务器选项”选项卡。在这里,您可以指定经销商,发布商和订阅者。确保在适合您的设置的情况下将这些设置为true。如果这些选项都设置为false,就像我使用所有SQL 2016的情况一样,您可能会因为无法连接到分发服务器而收到此错误。


0
投票

根据SSMS 17。4(2017年12月14日发布)的change log,此错误现已修复为PULL订阅。


-1
投票

来自这个Connect item,解决方法似乎是......

1.在Windows框中将用户添加为本地管理员 2.运行SSMS作为管理员..

© www.soinside.com 2019 - 2024. All rights reserved.