我已经尝试过SQL Server 2008 Management Studio和其他第三方工具来编写所有数据库对象(视图,SP和表)的脚本,但我无法生成一个文件脚本,其前面有一个drop语句。每个对象的“如果存在..”声明。
我需要“if exists”语句,因此如果对象不存在,我不会收到任何错误。 该工具不必用于sql server 2008.
答案 0 :(得分:4)
SQL 2008 Management Studio可以执行此操作。右键单击数据库名称并选择Tasks-> Generate Scripts ...选中“All Database Objects”框,然后在下一个屏幕上将Include If NOT EXISTS设置为True(这也将执行If Exists ..虽然它并不明显,但脚本却落到了真实之中。我认为这对你有用。
答案 1 :(得分:0)
将“结果设置为文本”并运行以下脚本。将结果剪切并粘贴到窗口中并运行。如果需要,您可以调整脚本以过滤掉某些表。
select 'if object_id ('''+ s.name + '.' + t.name +
''') is not null drop table ' + s.name + '.' + t.name +
char (10) + 'go'
from sys.schemas s
join sys.tables t
on t.schema_id = s.schema_id
会产生如下结果:
--------------------------------------------------------------------------
if object_id ('dim.Dim1') is not null drop table dim.Dim1
go
if object_id ('dim.TestSnapshot') is not null drop table dim.TestSnapshot
go
if object_id ('fact.Test') is not null drop table fact.Test
go