SQL Server 复制本地订阅属性返回"Cannot apply value ‘null’ to property ServerInstance: Value cannot be null."



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

当我使用SSMS和对象资源管理器连接到SQL 2016数据库时选择"复制"->"本地订阅"->"MySubscription",然后右键单击并选择"属性"I get the error"无法将值'null'应用于属性ServerInstance:值不能为null。"。

这意味着什么?我该如何修复它?我使用我的Windows域用户登录,该用户在两个系统上都是系统管理员。

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

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

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

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

我刚刚遇到了同样的问题,我的复制发布服务器和分发服务器在SQL Server 2014上,而我的订阅服务器是SQL Server 2016。当我尝试使用SSMS 2016时,我也遇到了同样的问题,但当我使用SSMS 2014时,一切都很好,所以这很可能是因为SSMS的版本。请尝试使用发布者(源)正在使用的SSMS版本。

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

在我目前的设置中,一切都是SQL 2016。我遇到了同样的问题,并通过在订阅服务器上为分发服务器和发布服务器创建链接服务器来修复它。这些应该是在设置过程中创建的,所以我不知道为什么没有。

我从分发服务器为发布服务器编写了链接服务器repl_distributor和链接服务器的脚本,然后在订阅服务器上运行这些脚本。这就解决了这个问题。

我希望这也适用于你(尽管你的问题是很久以前的事了,所以你现在可能没事了!)。

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

根据SSMS 17.4的更改日志(2017年12月14日发布),PULL订阅现已修复此错误。

从这个连接项目来看,解决方案似乎是..

1.在windows框中将用户添加为本地管理员
2.以管理员身份运行SSMS。。

相关内容

最新更新