我必须在没有SCHEMABINDING
的情况下重新创建所有视图,但是当我使用syscomments
创建脚本时,text
列包含CREATE VIEW
而不是ALTER VIEW
。如何生成ALTER
脚本?
答案 0 :(得分:4)
一种方法是在对象资源管理器中突出显示Views节点,然后点击 F7 (View > Object Explorer Details
)。在右边将是所有观点;遗憾的是,根据视图是否具有SCHEMABINDING
,您无法过滤或添加新列进行排序。因此,您必须手动选择所需的文件(或者只选择System Views
文件夹以外的所有文件夹),然后右键单击Script View As > DROP and CREATE to > New Query Editor Window
。现在,您只需搜索SCHEMABINDING
的脚本,删除或注释掉每个实例,然后运行脚本。如果您选择的某些视图首先没有SCHEMABINDING
,那么没什么大不了的 - 它们也会被删除并重新创建。
(在我看来,这比尝试使用CREATE VIEW
搜索和替换ALTER VIEW
要容易得多 - 因为CREATE
和{{1}之间可能有任意数量的空白字符你仍然必须评论或删除VIEW
。虽然这可能不会伤害,但作为本练习的一部分,确保这里的语法约定是一致的,并修复不遵守的视图,例如将SCHEMABINDING
更改为CREATE______VIEW
(下划线表示空格)。)
请注意,这显然会删除与这些视图关联的所有索引。
另请注意,generate scripts wizard还允许您选择所有视图,但不会过滤是否有CREATE_VIEW
,并且向导不会编写脚本SCHEMABINDING
但您可以在高级设置中选择ALTER
。您仍然需要调整输出以删除DROP and CREATE
,并且根据所选的选项,您可能需要删除现在将失败的索引视图的任何SCHEMABINDING
语句。