从数据库中的所有视图中删除SCHEMABINDING

时间:2013-08-20 17:39:47

标签: sql sql-server sql-server-2008 tsql

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

1 个答案:

答案 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语句。