用于清除数据库表的SQL脚本

时间:2010-03-24 20:46:28

标签: tsql sql-server-2008

我需要备份一个包含大量数据的SQL Server Db,然后导入到另一个环境中进行更新和测试。因为,我对数据不感兴趣,我只想在我的其他服务器上重新创建模式。有一个名为“生成脚本”的选项,但是在目标服务器上运行它们会引发错误。

好奇,如果有人试图编写一个SQL脚本来运行数据库中的所有表并清除行,那么我就可以将模式备份创建为.bak文件并将其还原到另一个服务器中。

3 个答案:

答案 0 :(得分:3)

Red Gate生成一个名为Sql Compare的产品,您可以使用该产品将架构从一个Sql Server数据库同步到另一个。这可能比自己编写一些脚本容易得多,而且如果两个数据库以后不同步,它可以让您轻松地传输更改。它不是免费产品,但您可以在14天的试用期内免费使用它。

答案 1 :(得分:3)

小心它,但这样做。它会清空数据库中的所有表。

-- disable referential integrity
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'

-- print table name
EXEC sp_MSForEachTable 'truncate table ?'

-- enable referential integrity again
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'

答案 2 :(得分:1)

你需要:

  1. 禁用表格上的所有约束
  2. 截断表格
  3. 重新创建约束