症状
请考虑以下情况:
-
在 SQL Server 2005 的实例中创建包含发布数据库中的列筛选器的发布。
-
将发布数据库的数据库备份还原到 SQL Server 2012、2014或2016的实例。
-
子包包含由表达式指定的连接字符串。
-
例如,使用RESTORE语句中的KEEP_REPLICATION选项保留复制设置。
在这种情况下,复制在 SQL Server 2012、2014或2016中不起作用。
原因
出现此问题的原因是,从表元数据中检索 "项目列" 对象的长度,这是 SQL Server 2005 的两个字节和 SQL Server 2012、2014和2016的4个字节。 因此,当你尝试将 "文章" 列 id 插入此对象时,它将复制前两个字节,保留初始垃圾值原样。
解决方案
此问题已在 SQL Server 的以下累积更新中修复:
Sql server 2016 累积更新4对于 sql SERVER2014 SP2累积更新3( Sql server 2014 SP1 累积更新 10 )
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
Sql server 2016 的最新累积更新sql SERVER2014 SP1/SP2的最新累积更新sql server 2012 的累积更新
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新的 术语 。