我正在将SQL 2008 R2数据库复制到SQL 2016数据库。
当我使用SSMS和对象资源管理器连接到SQL 2016数据库时 选择Replication-> Local Subscription-> MySubscription然后右键单击并选择Properties我收到错误“无法将值'null'应用于属性ServerInstance:Value不能为null。”。
这是什么意思,我该如何解决?我使用我的Windows域用户登录,这是两个系统上的系统管理员。
答案 0 :(得分:2)
启动SQL 2016,引入了更改以支持Tran Replication的内存优化订阅者。 SSMS中的这个错误是该变化的回归。
在订阅属性表单中,添加了一个新条目以显示它是否是内存优化的订阅。此信息从分发服务器获取。
因此,对于推送订阅,如果订阅者是SQL 2016或更高版本,如果您尝试查看订阅服务器的订阅属性,则分发服务器将返回为NULL,因为它无法访问/连接到分发服务器。这就是您收到此错误的原因。
在修复此问题之前,您可以查看发布方的订阅属性。
答案 1 :(得分:0)
我遇到了同样的问题,我的复制发布者和发行商在SQL Server 2014上,我的订阅者是SQL Server 2016.当我尝试使用SSMS 2016时,我遇到了同样的问题,但是当我使用SSMS 2014时,一切正常,所以这很可能是因为SSMS的版本。尝试使用发布者(来源)正在使用的SSMS版本。
答案 2 :(得分:0)
当所有服务器都使用相同版本的SQL时,我遇到了此问题。我在某处读到如果分发服务器和发布者之间存在三个以上版本的SQL(以及根据复制类型的订阅者),Replication将无法正常工作,但我通过使用较低的数据库兼容级别解决了这个问题。 / p>
在我目前的设置中,一切都是SQL 2016.我遇到了同样的问题,并通过为订阅者和发布者创建链接服务器来修复它。这些应该在设置期间创建,所以我不确定它们为什么不是。
我从经销商处编写了链接服务器repl_distributor以及发布者的链接服务器,然后在订阅者上运行这些脚本。然后解决了这个问题。
我希望这也适合你(虽然你的问题很久以前所以你现在可能还好!)。
答案 3 :(得分:0)
检查链接服务器"服务器选项"标签。在这里,您可以指定经销商,发布商和订阅者。确保在适合您的设置的情况下将这些设置为true。如果这些选项都设置为false,就像我使用所有SQL 2016的情况一样,您可能会因为无法连接到分发服务器而收到此错误。
答案 4 :(得分:0)
根据SSMS 17.4的change log(2017年12月14日发布),此错误现已修复为PULL订阅。
答案 5 :(得分:-1)
从此Connect item开始,解决方法似乎是..
1.在Windows框中添加用户作为本地管理员
2.运行SSMS作为管理员..