Sql server 如何以编程方式清除Microsoft SQL Server中所有数据库中的所有表
我找到了这个脚本,它负责清除一个数据库中的所有表Sql server 如何以编程方式清除Microsoft SQL Server中所有数据库中的所有表,sql-server,Sql Server,我找到了这个脚本,它负责清除一个数据库中的所有表 EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' EXEC sp_MSForEachTable 'DELETE FROM ?' EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL' GO 我不熟悉Microsoft SQL Server,目前我右键单击并运行查询。我要清理100个数据库 如何以编程方式清除所
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
EXEC sp_MSForEachTable 'DELETE FROM ?'
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO
我不熟悉Microsoft SQL Server,目前我右键单击并运行查询。我要清理100个数据库
如何以编程方式清除所有数据库中的所有表?您可能还可以使用未记录的
sp\u MSForEachDB
,将其与sp\u MSForEachTable
结合起来,遍历每个db
,然后遍历每个表。您应该使用TRUNCATE
而不是DELETE
。但是,您最好只使用SSM为数据库生成脚本。生成脚本,删除旧数据库,生成新的空数据库
此未记录过程的语法为:
EXEC sp_MSforeachdb @command
例如:
USE master
GO
EXEC sys.sp_MSforeachdb 'USE ?
IF DB_NAME() NOT IN(''master'', ''model'', ''msdb'', ''tempdb'')
BEGIN
EXEC sp_MSForEachTable ''ALTER TABLE ? NOCHECK CONSTRAINT ALL'';
EXEC sp_MSForEachTable ''TRUNCATE ?'';
EXEC sp_MSForEachTable ''ALTER TABLE ? CHECK CONSTRAINT ALL'';
END'
GO
“清除”所有桌子是什么意思?删除所有数据?考虑到您应该有外键,这不是一项简单的任务。老实说,如果您确实需要“清理”数据库,那么
删除它们,然后从源代码管理中重新创建它们不是更好吗?如果您需要在一个实例上清空100多个数据库中的每个表中的数据,这是非常错误的。这是一个巨大的红旗,你需要认真考虑重写你的大部分系统或者你试图破解某人。无论哪种方式,您试图完成的任务听起来都是非常错误的,甚至一点都不好笑。将所有数据库提交到git—将它们全部删除并通过giti进行部署—右键单击数据库并创建到。当我运行脚本时,重新创建一个数据库需要10分钟以上。虽然上面的脚本是即时的。就我个人而言,在这个例子中,我更喜欢截断而不是删除,但是删除并重新创建数据库对我来说仍然是最有意义的。