Microsoft SQL Server Management Studio 2008 eliminando più tabelle utente


12

Esiste un modo semplice per eliminare più tabelle nel database senza eliminare il database e ricrearlo? In questo caso abbiamo oltre 100 da rimuovere.

Sono abbastanza felice di rimuovere tutte le tabelle utente e reimportare i dati necessari ma non riesco a toccare nessuna delle impostazioni di sicurezza del database.

Risposte:


26

In Esplora oggetti, accedi al database che ti interessa. Espandilo e fai clic sulla cartella Tabelle. Premi F7 per visualizzare i dettagli di Esplora oggetti. Seleziona le tabelle che desideri eliminare e premi il tasto Canc.


che dire dei vincoli?
Simon,

2

Qualche motivo per non farlo direttamente in T-SQL (con DROP TABLE)? Quindi è solo il caso di creare lo script SQL appropriato (molto probabilmente generandolo automaticamente se hai un elenco delle tabelle che devi eliminare) e sei via.


0

Tsql risponde come suggerito. Non sono riuscito a far funzionare la tabella di rilascio in tsql, ma questo ha funzionato.

declare @TABLE varchar(250)

declare select_cursor cursor for
select name from sysobjects where type='U'

open select_cursor

fetch next from select_cursor
into @TABLE

while @@FETCH_STATUS = 0
begin
    print 'DROP TABLE '+@TABLE

    fetch next from select_cursor
    into @TABLE
end

close select_cursor
deallocate select_cursor

Ciò presuppone che non siano presenti vincoli chiave per la coscia.
K. Brian Kelley,

Puoi eseguire la scansione delle dipendenze e rilasciare le tabelle in ordine con un po 'più di sforzo. La pubblicazione di stackoverflow su <a href= stackoverflow.com/questions/352176/…> ha alcune soluzioni per farlo.
Preoccupato di TunbridgeWells

0

È possibile eliminare più tabelle eseguendo l'iterazione attraverso di esse ed eseguendo questo:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

Tuttavia, se si tenta di eliminare una tabella a cui fa riferimento una chiave esterna, verrà visualizzato un errore simile

Msg 3726, Level 16, State 1, Line 1
Could not drop object 'dbo.Table1' because it is referenced by a FOREIGN KEY constraint.

Se si desidera semplicemente farlo manualmente, è sufficiente ripetere alcune volte fino a quando le tabelle con il riferimento non vengono eliminate (ad es. Se Table2 ha un riferimento a Table1, quindi al primo avvio Table1 non può essere eliminato mentre viene rilasciato Table2, e al secondo l'esecuzione di Table1 può quindi essere eliminata poiché Table2 non esiste più).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.