我正在尝试编写一个脚本,该脚本将完全清空SQL Server数据库。这就是我到目前为止所知道的:
USE [dbname]
GO
EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'
EXEC sp_msforeachtable 'DELETE ?'
当我在Management Studio中运行它时,我得到:
命令已成功完成。
但是当我刷新表格列表时,它们仍然存在。我做错了什么?
发布于 2011-12-09 08:53:24
当有多个外键表时,它也不适用于我。
我发现该代码可以正常工作,并且可以执行您尝试的所有操作(从数据库中删除所有表):
DECLARE @Sql NVARCHAR(500) DECLARE @Cursor CURSOR
SET @Cursor = CURSOR FAST_FORWARD FOR
SELECT DISTINCT sql = 'ALTER TABLE [' + tc2.TABLE_SCHEMA + '].[' + tc2.TABLE_NAME + '] DROP [' + rc1.CONSTRAINT_NAME + '];'
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc2 ON tc2.CONSTRAINT_NAME =rc1.CONSTRAINT_NAME
OPEN @Cursor FETCH NEXT FROM @Cursor INTO @Sql
WHILE (@@FETCH_STATUS = 0)
BEGIN
Exec sp_executesql @Sql
FETCH NEXT FROM @Cursor INTO @Sql
END
CLOSE @Cursor DEALLOCATE @Cursor
GO
EXEC sp_MSforeachtable 'DROP TABLE ?'
GO
你可以找到帖子的here。这是Groker的帖子。
发布于 2014-04-26 01:09:17
您还可以仅使用MSSMS UI工具(不使用SQL脚本)从数据库中删除所有表。有时这种方式可能会更舒服(特别是如果偶尔执行)
我按如下步骤一步一步地完成此操作:
在数据库树上选择[表] (Object Explorer)
发布于 2018-04-18 04:15:02
在SSMS中:
H19,在“脚本删除和创建”上单击“高级”按钮H210H111将“脚本创建”切换到“脚本删除”,然后按确定H212H113然后保存到文件、剪贴板或新的查询窗口。H214H115运行脚本。F217
现在,这将删除所有内容,包括数据库。确保删除您不希望删除的项的代码。或者,在“选择对象”部分,只需选择要删除的项,而不是选择为整个数据库编写脚本。
https://stackoverflow.com/questions/8439650
复制相似问题