1

我必须在没有 的情况下重新创建所有视图SCHEMABINDING,但是当我使用创建脚本时syscomments,该text列包含CREATE VIEW而不是ALTER VIEW。如何生成ALTER脚本?

4

1 回答 1

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因为 and 之间可能有任意数量的空白字符,CREATE并且VIEW您仍然必须评论或删除SCHEMABINDING. 虽然它可能不会受到伤害,但作为一部分在本练习中,确保此处的语法约定是一致的,并修复不遵守的视图,例如更改CREATE______VIEWCREATE_VIEW(下划线表示空格)。)

请注意,这显然会删除与这些视图关联的所有索引。

另请注意,生成脚本向导还将允许您选择所有视图,但不能过滤它们是否具有SCHEMABINDING,并且该向导不会编写脚本ALTER,但您可以DROP and CREATE在高级设置中进行选择。您仍然需要调整输出以删除,SCHEMABINDING并且根据选择的选项,您可能需要删除CREATE INDEX现在将失败的索引视图的任何语句。

于 2013-08-20T17:51:52.623 回答