我需要编写一个SQL查询来从特定模式中删除所有表及其数据。
例如,在我的数据库中,我有包含模式dws6
的表,我想在SQL中使用一个脚本来删除模式dws6
中的所有表。
答案 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