云服务器网:购买云服务器和VPS必上的网站!

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

## 删除MSSQL中所有表:一招制敌!
MSSQL(Microsoft SQL Server)是一种由Microsoft Corporation开发的关系型数据库管理系统(RDBMS),它可以被用于存储和获得大量结构化数据。在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中的所有表。

本文来源:https://www.yuntue.com/post/229740.html | 云服务器网,转载请注明出处!

关于作者: yuntue

云服务器(www.yuntue.com)是一家专门做阿里云服务器代金券、腾讯云服务器优惠券的网站,这里你可以找到阿里云服务器腾讯云服务器等国内主流云服务器优惠价格,以及海外云服务器、vps主机等优惠信息,我们会为你提供性价比最高的云服务器和域名、数据库、CDN、免费邮箱等企业常用互联网资源。

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注