我正在使用sql-server 2005.最初,爲了學習目的,我創建了很多表現在我想刪除除了一個表之外的所有表目前我正在努力。 是否有任何代碼或查詢與我可以刪除我的數據庫中的所有表,除了一個有用的表。 我認爲的一種方法是使用SELECT INTO...
子句將該表複製到新數據庫並刪除該數據庫,但不知道這是解決此問題的好方法。如何從sql server 2005中的數據庫中刪除所有表,除了一個表之外
7
A
回答
7
如果表格不是很大,我可能只需在SSMS中的「對象瀏覽器詳細信息」窗口中選擇它們,然後點擊刪除。
對於一個編程解決方案,你可以使用
EXEC sys.sp_MSforeachtable
N'IF OBJECT_ID(''?'') <> OBJECT_ID(''dbo.YourTableToKeep'')
DROP TABLE ?
'
這兩種方法可能需要以刪除參與FK關係中的所有表重複運行(表不能被刪除,如果另一表有FK引用它)。
+3
爲了詳細解釋UI解決方案:F7是Object Explorer Details鍵盤快捷鍵。您不能在對象瀏覽器樹視圖中多選對象,但可以在樹視圖中選擇表節點,然後按F7以顯示對象資源管理器詳細信息。 –
6
您可以使用sql來創建您需要的所有滴站。例如,下一個sql查詢
USE [MyDatabase];
GO
SELECT
replace(
replace('DROP TABLE [{Schema}].[{TableName}];'
,'{Schema}',TABLE_SCHEMA)
,'{TableName}',TABLE_NAME)
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME NOT IN ('TableNameOne','TableNameTwo')
並獲取執行查詢的結果。
複製查詢的第一列並將其粘貼到新的查詢窗口中。
它很容易看到,你得到的,除了「TableNameOne」和「TableNameTwo」,所有表下降staments列表...
林認爲這是非常簡單的...
4
/* Drop all Foreign Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)
WHILE @name is not null
BEGIN
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
WHILE @constraint IS NOT NULL
BEGIN
SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint) +']'
EXEC (@SQL)
PRINT 'Dropped FK Constraint: ' + @constraint + ' on ' + @name
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)
END
GO
/* Drop all Primary Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
WHILE @name IS NOT NULL
BEGIN
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
WHILE @constraint is not null
BEGIN
SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint)+']'
EXEC (@SQL)
PRINT 'Dropped PK Constraint: ' + @constraint + ' on ' + @name
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
END
GO
/* Drop all tables */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 ORDER BY [name])
WHILE @name IS NOT NULL
BEGIN
SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) +']'
EXEC (@SQL)
PRINT 'Dropped Table: ' + @name
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO
+0
這個服務!謝謝 – ben
相關問題
- 1. 從SQL Server數據庫中的所有表數據刪除,除了一些表
- 2. 在MySql中刪除除了一個之外的所有表格
- 3. 如何刪除SQL Server數據庫中的所有表?
- 4. 刪除SQL Server數據庫中的所有表格,除了少數
- 5. 刪除SQL Server 2005數據庫中的所有行
- 6. 如何從SQL Server 2005數據庫中刪除脫機文件
- 7. 從sql 2005數據庫中刪除所有表的最佳方法
- 8. 如何從數據庫中刪除除少數表以外的所有表中的數據
- 9. 如何從SQL Server 2005中的表中刪除鎖?
- 10. 從包含表的所有數據庫中的表中刪除
- 11. 如何從SQL Server數據庫中刪除錶行?
- 12. SQL Server:刪除除系統表外的所有非系統表?
- 13. 如何從數據庫表中刪除所有數據?
- 14. 如何從SQL Server 2005表中恢復已刪除的行?
- 15. 從批處理文件中刪除SQL Server數據庫中的所有表?
- 16. 如何從Sql Server Management Studio的樹狀列表中刪除意外刪除的數據庫列表?
- 17. SQL Server 2005中 - 級聯刪除所有相關表
- 18. 如何從一個SQL Server數據庫表中刪除重複的行?
- 19. 從ODBC(SQL Server)中刪除數據庫名稱表列表
- 20. 從SQL中的數據庫表中刪除除top n之外的所有內容
- 21. 從SQL Server 2005數據庫中刪除非法字符?
- 22. 如何從SQL Server 2005中恢復意外刪除的記錄?
- 23. 刪除SQL Server數據庫中的所有數據
- 24. 如何從表中刪除所有內容,除了MySQL中的1項外?
- 25. 從數據庫的所有表中刪除所有記錄
- 26. 從數據庫的所有表中刪除所有行
- 27. 刪除除PHP第一個之外的所有列表元素?
- 28. 有沒有辦法從一個數據庫中刪除'sysmessages'表?
- 29. 從mysql數據庫的所有表中刪除一條記錄
- 30. 誰刪除了mysql數據庫中的所有表格
如果表格不是很大,我可能只需在SSMS中的「對象瀏覽器詳細信息」窗口中選擇它們,然後點擊刪除。 –
感謝@MartinSmith這是一個好方法,但是有什麼方法可以使用語句來做同樣的事情。 – Manish