Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何以编程方式清除Microsoft SQL Server中所有数据库中的所有表_Sql Server - Fatal编程技术网

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分钟以上。虽然上面的脚本是即时的。就我个人而言,在这个例子中,我更喜欢截断而不是删除,但是删除并重新创建数据库对我来说仍然是最有意义的。