我必须在没有 的情况下重新创建所有视图SCHEMABINDING
,但是当我使用创建脚本时syscomments
,该text
列包含CREATE VIEW
而不是ALTER VIEW
。如何生成ALTER
脚本?
1 回答
一种方法是在对象资源管理器中突出显示 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
因为 and 之间可能有任意数量的空白字符,CREATE
并且VIEW
您仍然必须评论或删除SCHEMABINDING
. 虽然它可能不会受到伤害,但作为一部分在本练习中,确保此处的语法约定是一致的,并修复不遵守的视图,例如更改CREATE______VIEW
为CREATE_VIEW
(下划线表示空格)。)
请注意,这显然会删除与这些视图关联的所有索引。
另请注意,生成脚本向导还将允许您选择所有视图,但不能过滤它们是否具有SCHEMABINDING
,并且该向导不会编写脚本ALTER
,但您可以DROP and CREATE
在高级设置中进行选择。您仍然需要调整输出以删除,SCHEMABINDING
并且根据选择的选项,您可能需要删除CREATE INDEX
现在将失败的索引视图的任何语句。