删除MSSQL中所有表:一招制敌!(删除mssql所有表)

## 删除MSSQL中所有表:一招制敌!

MSSQL(Microsoft SQL Server)是一种由Microsoft Corporation开发的关系型数据库管理系统(RDBMS),它可以被用于存储和获取大量结构化数据。在MSSQL中有许多表来存储不同类型的数据,有时候,为了保证数据的完善性,我们需要删除MSSQL中的所有表。那么,如何删除MSSQL中所有表呢?今天就给大家介绍一个高效的做法:

### 一、使用一条T-SQL 语句来删除MSSQL中所有表

通过在脚本中封装T-SQL语句,我们可以一次性删除MSSQL中的所有表,代码如下:

DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL='
ALTER TABLE ' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) + ' DROP TABLE
FROM INFORMATION_SCHEMA.TABLES
INTO #DropTable
```

EXEC(@SQL)

-- 删除所有的表
WHILE EXISTS (SELECT * FROM #DropTable)
BEGIN
SELECT TOP (1) @SQL = 'DROP TABLE ' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
FROM #DropTable

EXEC(@SQL)
DELETE FROM #DropTable WHERE TABLE_SCHEMA = PARSENAME(@SQL, 4)
AND TABLE_NAME = PARSENAME(@SQL, 3)
END
DROP TABLE #DropTable

以上代码的主要思想是: 首先将所有表名加载到临时表#DropTable中,然后使用while结构删除临时表中的每一条记录。

### 二、使用脚本调用存储过程删除MSSQL中所有表

使用存储过程也可以实现批量删除MSSQL中的表,使用以下脚本即可完成:

DECLARE @SQL NVARCHAR(MAX)
--构造出一条存储过程的SQL语句
SELECT @SQL = 'CREATE PROCEDURE sp_drop_all_tables
AS
BEGIN
DECLARE @TableName NVARCHAR(MAX)
DECLARE cur_TableName CURSOR
FOR SELECT TABLE_SCHEMA + ''.'' +TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES

OPEN cur_TableName
FETCH NEXT FROM cur_TableName INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE(''DROP TABLE '' + @TableName)
FETCH NEXT FROM cur_TableName INTO @TableName
END
CLOSE cur_TableName
DEALLOCATE cur_TableName
END'

--创建存储过程
EXEC(@SQL)
--调用存储过程
exec sp_drop_all_tables
```

上述代码创建一个sp_drop_all_tables存储过程,并通过循环调用该存储过程来删除MSSQL中的所有表。

### 总结

以上就是解决MSSQL中如何快速删除所有表的方法,通过以上的T-SQL语句和存储过程,可以轻松快捷的删除MSSQL中的所有表。

数据运维技术 » 删除MSSQL中所有表:一招制敌!(删除mssql所有表)