用于从特定架构中删除所有表及其数据的SQL查询

时间:2017-02-13 05:53:43

标签: sql sql-server sql-server-2008 tsql

我需要编写一个SQL查询来从特定模式中删除所有表及其数据。

例如,在我的数据库中,我有包含模式dws6的表,我想在SQL中使用一个脚本来删除模式dws6中的所有表。

2 个答案:

答案 0 :(得分:1)

  

我尝试过以下脚本,并且完美运行

DECLARE @SQL NVARCHAR(MAX);

DECLARE db_cursor CURSOR FOR
SELECT 'Drop Table ' + Table_Schema + '.' + Table_Name + ';'
FROM Information_Schema.Tables
WHERE Table_Type = 'BASE TABLE'
AND Table_Schema = 'dws6'

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @SQL

WHILE @@FETCH_STATUS = 0
BEGIN
--PRINT @SQL
EXECUTE sp_executesql @SQL

FETCH NEXT FROM db_cursor INTO @SQL
END
CLOSE db_cursor
DEALLOCATE db_cursor;

答案 1 :(得分:0)

此Query将为您生成所有DROP TABLE语句并PRINT SQL statments

DECLARE @Sql VARCHAR(MAX)
    SELECT @Sql = 
        COALESCE(@Sql, '') + 'DROP TABLE [DBO1].' + QUOTENAME(TABLE_NAME) + ';' + CHAR(13)
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = 'dws6'

    PRINT @Sql