症状
假设你使用 Microsoft SQL Server 2012 或 SQL Server 2014 合并复制。 使用相同架构名称和对象名称的任何已发布数据库对象中存在跨数据库依赖关系。 在这种情况下,你会收到以下错误:
架构脚本 "<文件名>。sch ' 无法传播到订阅者。由于操作系统错误2,进程无法读取文件 "<pathname>\<文件名>sch"。
原因
出现此问题的原因是,如果任何发布的数据库对象中存在跨数据库对象,则 SQL Server Snapshot 代理有时会返回错误的数据库用于某些依赖关系。
解决方案
应用修补程序后,如果数据库设置为当前 publisher 数据库之外的任何内容,SQL Server 将调整其行为以忽略任何非文章依赖关系。在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2014 的累积更新1 /en-us/help/2931693
SQL Server 2012 SP1 的累积更新9 /en-us/help/2931078
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。