在SQL Server中,您可以使用以下两种主要方法来删除所有表的数据:
-
使用 TRUNCATE TABLE 语句:这个语句会删除表中的所有行,但保留表的结构。它比DELETE语句快,因为它不会触发触发器。
USE YourDatabaseName; GO DECLARE @TableName nvarchar(128); DECLARE TableCursor CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'; OPEN TableCursor FETCH NEXT FROM TableCursor INTO @TableName WHILE @@FETCH_STATUS = 0 BEGIN EXEC ('TRUNCATE TABLE ' + @TableName); FETCH NEXT FROM TableCursor INTO @TableName END CLOSE TableCursor DEALLOCATE TableCursor
2. 使用 DELETE 语句:这个语句会删除表中的所有行,并且会触发删除触发器。如果您的表有触发器,您可能需要使用这种方法。
USE YourDatabaseName; GO DECLARE @TableName nvarchar(128); DECLARE @SQL nvarchar(4000); DECLARE TableCursor CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'; OPEN TableCursor FETCH NEXT FROM TableCursor INTO @TableName WHILE @@FETCH_STATUS = 0 BEGIN SET @SQL = 'DELETE FROM ' + @TableName; EXEC sp_executesql @SQL FETCH NEXT FROM TableCursor INTO @TableName END CLOSE TableCursor DEALLOCATE TableCursor
在这两个例子中,请将
YourDatabaseName
替换为您的数据库名称。这两个脚本都使用游标遍历数据库中的所有表,并对每个表执行 TRUNCATE TABLE 或 DELETE。需要注意的是,这些操作是不可逆的,所以在执行之前请确保您有适当的备份。