SQL Server删除所有用户对象并清空数据库
在MS SQL Server中,删除所有用户对象可以通过运行以下查询来完成:
USE [database_name];
GO
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'DROP ' +
CASE WHEN type_desc LIKE 'USER_%'
THEN N'USER '
ELSE N''
END +
QUOTENAME(name) + N';' + CHAR(13)
FROM sys.database_principals
WHERE type IN ('S', 'U', 'G')
AND name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys');
PRINT @sql;
EXEC sys.sp_executesql @sql;
ALTER DATABASE [database_name] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [database_name] SET MULTI_USER;
然后,您可以通过运行以下查询来清空数据库:
USE [database_name];
GO
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'DELETE FROM ' + QUOTENAME(SCHEMA_NAME(schema_id)) +
N'.' + QUOTENAME(name) + N';' + CHAR(13)
FROM sys.tables;
PRINT @sql;
EXEC sys.sp_executesql @sql;
注意:在操作之前,请务必备份您的数据库。此外,此操作会删除数据库中的所有数据。要在运行之前先检查您的查询结果,以确保您希望删除的所有对象已包含在内。