![sql server:如何加载损坏的视图](https://linux22.com/image/531381/sql%20server%EF%BC%9A%E5%A6%82%E4%BD%95%E5%8A%A0%E8%BD%BD%E6%8D%9F%E5%9D%8F%E7%9A%84%E8%A7%86%E5%9B%BE.png)
我有一个旧数据库服务器,其中安装了许多未进行架构绑定的视图。随着时间的推移,这些视图已经失修,有些引用的对象不再存在,或者引用的名称已更改的列。
为了测试升级脚本,我想将架构对象安装到一个空的测试数据库中。但是,许多视图无法加载,因为它们处于失修状态。
是否可以让 SQL Server 加载引用不存在对象的视图,以便我可以测试我的修复脚本?
我可以使用备份和恢复来做到这一点,但我不想加载庞大且需要数小时才能加载的数据集。
答案1
您可以备份数据库并将其恢复为新名称,删除所有表中的数据,强制重新索引并完全缩小数据库,然后在每次测试运行开始时备份结果以进行恢复。
这将为您提供一个小型的无数据数据库,其结构与损坏的视图和程序相同。您仍然需要备份和恢复所有数据,但只需执行一次,因为后续恢复将从已擦除和缩小的副本中进行。删除操作也需要一段时间,但同样只需要执行一次(重新索引和缩小应该非常快)。
答案2
我认为您无法做到这一点。为什么不将视图创建添加到测试脚本中?如果整个脚本成功运行,那么您的架构更改就解决了问题。
我认为早期版本的 SQL Server 允许直接修改 syscomments 表,这可能有效,但现在不再有效。