更新- 我发现使用 MSDN 文章“如何使用分离和附加功能移动数据库 (Transact-SQL)“解决了这个问题。我只需要创建一个脚本来分离和重新连接,但手动进行文件复制。任何有关如何克服向导问题的信息在将来都会有所帮助。
我正在将大约 20 个数据库从我们当前的服务器移动到新服务器。但在执行复制时,我发现如果某些数据库具有尚未复制到目标系统的其他数据库的视图,则无法复制。
生成的日志文件显示“失败,错误如下:视图中引用的数据库的“对象名称无效”。如果我首先复制视图中引用的数据库,然后在单独的步骤中复制包含视图的数据库,则成功。但是,其他一些数据库有相互关联的视图,因此无法调整复制发生的顺序。
有什么办法可以忽略这个错误并允许所有内容复制?
答案1
我在尝试使用 SQL Server 2008 中的复制数据库向导时遇到了类似的问题。当它尝试复制依赖于另一个视图的视图时,我会收到“无效对象名称”错误。为了修复这些错误,我使用了刷新视图存储过程来刷新每个视图的依赖关系信息。我必须按照创建依赖关系的顺序在视图上执行该过程。例如,如果我有三个视图 a、b 和 c,并且 c 依赖于 b,而 b 又依赖于 a,那么我需要执行:
EXECUTE sp_refreshview 'a';
EXECUTE sp_refreshview 'b';
EXECUTE sp_refreshview 'c';