Sto usando sql-server 2005. Inizialmente, per scopi didattici ho creato molte tabelle ora voglio eliminare tutte quelle tabelle tranne una che è attualmente sto lavorando. Esiste un codice o una query con cui posso eliminare tutte le tabelle dal mio database tranne quella una tabella utile. Un modo per pensare è quello di copiare quella tabella in un nuovo database usando la clausola SELECT INTO...
e rilasciare quel database ma non so è un buon modo per risolvere questo problema.Come eliminare tutte le tabelle da un database in SQL Server 2005 in una dichiarazione tranne una tabella
risposta
Se i tavoli non sono molto grandi probabilmente li selezionerei tutti tutti nella finestra "Dettagli Explorer oggetti" in SSMS, quindi premete cancella.
Per una soluzione di programmazione è possibile utilizzare
EXEC sys.sp_MSforeachtable
N'IF OBJECT_ID(''?'') <> OBJECT_ID(''dbo.YourTableToKeep'')
DROP TABLE ?
'
Entrambi i metodi potrebbero avere bisogno di corse ripetute al fine di eliminare tutte le tabelle coinvolte in relazioni FK (una tabella non può essere eliminato se un altro tavolo ha un FK riferimento esso).
Per elaborare un po 'la soluzione dell'interfaccia utente: F7 è la scorciatoia da tastiera Dettagli di Esplora oggetti. Non è possibile selezionare più oggetti nella vista ad albero di Esplora oggetti, ma è possibile selezionare il nodo Tabelle nella vista ad albero e premere F7 per visualizzare i dettagli di Esplora oggetti. –
È possibile utilizzare sql per creare tutte le gocce di cui si ha bisogno. Per esempio la prossima domanda di 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')
e ottenere il risultato dell'esecuzione della query.
Copia la prima colonna della query e incollala in una nuova finestra di query.
E 'facile vedere, che si ottiene un elenco di staments goccia per tutte le tabelle tranne 'TableNameOne' e 'TableNameTwo', ...
Im che sia molto semplice ...
/* 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
questo serve! Grazie – ben
- 1. Eliminare tutte le viste da SQL Server
- 2. Esportare tutte le tabelle da SQL Server in file separati
- 3. Come eliminare tutte le tabelle in un database MySQL?
- 4. Elimina tutte le tabelle tranne una in MySql
- 5. Trova una tabella su più database SQL SERVER 2005
- 6. Sql Query per elencare tutte le viste in un database SQL Server 2005
- 7. inserire i dati da una tabella in più tabelle
- 8. Come eliminare la proprietà cluster ma mantenere la chiave primaria in una tabella. SQL Server 2005
- 9. Come ripristinare il database da MDF in SQL Server 2005?
- 10. Modificare le regole di confronto di tutte le colonne di tutte le tabelle in SQL Server
- 11. SQL Server 2005 e ambito tabella temporaneo
- 12. Come contare ogni record in ciascuna tabella in un database di SQL Server 2005?
- 13. SQL Server copia tutte le righe da una tabella in un'altra tabella i.e duplicata
- 14. Database SQL Server 2005 'In Recovery'
- 15. Unire tabelle SQL Server su una dichiarazione simile
- 16. SQL Server come eliminare l'identità da una colonna
- 17. Trova tutte le colonne di un determinato tipo in tutte le tabelle in un database SQL Server
- 18. Come visualizzare tutte le tabelle in un database HSQLDB?
- 19. eliminare da due tabelle in una query
- 20. Come eliminare da un database?
- 21. Come si può sapere quali tabelle occupano più spazio in un database di SQL Server 2005?
- 22. SQL Server - Crea un singolo trigger che viene eseguito per TUTTE le tabelle nel database
- 23. Come creare un tipo di tabella in SQL Server 2005
- 24. Cambia proprietario del diagramma del database in SQL Server 2005
- 25. Come eliminare i dati in tutte le tabelle di accesso ms in una sola volta?
- 26. Elenco di tutte le tabelle nel database
- 27. Trova una stringa cercando tutte le tabelle in SQL Server Management Studio 2008
- 28. Come eliminare tutte le tabelle utente?
- 29. Come rimuovere tutte le righe da una tabella tranne le prime due e l'ultima?
- 30. Qual è il modo migliore in Android per eliminare tutte le righe da una tabella
Se i tavoli non sono molto grandi probabilmente li selezionerei tutti tutti nella finestra "Dettagli Explorer oggetti" in SSMS, quindi premi Elimina. –
Grazie @MartinSmith questo è un buon modo, ma c'è un modo con cui posso fare la stessa cosa usando le istruzioni. – Manish