【发布时间】:2010-10-18 18:04:06
【问题描述】:
我有一个来自 SQL Server 2005 的数据库,我以编程方式将其附加到 SQL Server 2008 R2 的一个实例,然后在一些表上重新建立复制(通过一些已经工作了很短生命周期的预烘焙脚本)另一台服务器仍在运行 SQL Server 2005。
可以说这只是一个特别复杂的业务需求。
有趣的是,在特定 SQL Server 代理作业上复制失败,并出现错误“列名 'originator id' 无效”。从我可以从这个链接中了解到:http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/Q_24145417.html - 旧的数据库需要升级各种零碎的东西才能与 SQL Server 2008 R2 的复制一起正常工作。升级过程就像运行存储过程 sp_vupgrade_replication 一样简单:http://technet.microsoft.com/en-us/library/ms188741.aspx
问题 1:为什么有ANY关于复制到我附加的数据库中的信息?!我的理解是分发数据库包含整个复制信息。我已经删除并重新附加了一个未升级的数据库副本,以确保它仍然无法确保我不会发疯。
问题 2:我知道当您将数据库附加到较新版本的 SQL Server 时,会执行一些程序来将数据库升级到某个兼容性级别。为什么这个存储过程不运行?
问题 3:这个存储过程到底发生了什么变化?除了 MSDN 文章提供给我的信息之外,还有什么方法可以让我找到更多信息吗?我没有尝试过,但我很确定 SQL Profiler 只会告诉我它正在执行 sp_vupgrade_replication 而不会给我它正在运行的查询的任何详细信息。
【问题讨论】: