Il modo più rapido per eliminare tutto il contenuto di un database e ricostruirlo da zero?

StackOverflow https://stackoverflow.com/questions/1819363

Domanda

Sto progettando un sito ASP.Net standard con un database SQL. Ho uno schema di database e durante i test sto cambiando i tipi di dati tra le altre attività e i dati contenuti all'interno non sono poi così importanti.

Continuo a ricevere errori poiché i vecchi dati non corrispondono alle nuove regole. Questo non è importante e sono felice di cancellare tutto, ma attualmente devo esportare / pubblicare il database in un file .sql e importarlo da zero, il che richiede molto tempo.

Esiste un pulsante / funzione rapido che mi è sfuggito che ti consente di reimpostare i numeri / ID automatici su 1 ed eliminare tutto il contenuto o accelerare quello che faccio attualmente?

È stato utile?

Soluzione

Ci sono alcune opzioni che potresti prendere, la "più veloce" dipende davvero dal tuo database.

Per rispondere in primo luogo alle tue domande sul seeding, ecc. - TRUNCATE TABLE eliminerà tutte le informazioni in una tabella (molto velocemente, poiché non è registrato) e reimposterà la colonna della tua identità.

es:

TRUNCATE TABLE dbo.table

http://msdn.microsoft.com/ it-it / library / aa260621 (SQL.80) .aspx

La restrizione significativa qui è che non puoi usarlo su una tabella a cui fa riferimento un'altra tabella. In questo caso è possibile utilizzare un'eliminazione standard e quindi utilizzare DBCC CHECKIDENT

es:

DELETE FROM dbo.table
GO
DBCC CHECKIDENT(dbo.table, reseed, 0)

http://msdn.microsoft.com/en-us/library /ms176057.aspx

Ricorda di eliminare per assicurarti di eliminare le informazioni nell'ordine corretto (ovvero tenendo conto delle chiavi esterne).

Un altro approccio che uso spesso è semplicemente quello di scrivere uno script completo di demolizione / ricostruzione quando voglio ripristinare il database. La premessa di base è di eliminare o eliminare tutti gli oggetti del database all'inizio dello script e quindi ricrearli. Questa non è necessariamente una soluzione per tutti gli scenari, ma per le attività di base funziona bene per me. Per evitare errori, di solito aggiungerei le mie dichiarazioni di rilascio nelle istruzioni IF, ad esempio:

IF EXISTS 
(
     SELECT * 
     FROM information_schema.tables 
     WHERE table_name = 'table' AND table_schema = 'dbo'
)
BEGIN
    DROP TABLE dbo.table
END

Altri suggerimenti

Perché non scrivi del codice T-SQL per eliminare (o troncare, anche più velocemente) tutte le tue tabelle? Fai attenzione a prendere in considerazione le tue regole di integrità mentre cancelli le tabelle: pulisci sempre le tabelle contenenti la chiave esterna prima di pulire quella contenente la chiave primaria.

Se hai solo bisogno di cancellare i dati, basta scrivere uno script per troncare tutti i dati in ogni tabella. Il comando truncate ripristina anche tutti i campi IDENTITY.

TRUNCATE TABLE myTable

Per ogni tavolo che hai. Quindi esegui quello script ogni volta.

Ecco un modo rapido per eliminare tutti i dati in una tabella:

TRUNCATE TABLE YourTableName

Potresti scrivere uno script che troncerebbe tutte le tue tabelle.

L'alternativa è semplicemente GOCCARE la tabella e ricrearla.

Se vuoi davvero eliminare tutti i dati, puoi staccare il database e crearne uno nuovo; è un po 'estremo, ma forse più veloce di lasciar cadere prima tutto.

Come altri hanno suggerito, trovo preferibile mantenere uno script che costruisce il database da zero e può distruggerlo prima di ricostruirlo. Sviluppa questo script proprio come faresti con il resto dell'applicazione. Trovo più facile capire il database attraverso uno script piuttosto che costruendolo attraverso una GUI, specialmente dove ci sono relazioni complesse, trigger e così via.

È utile anche se hai altri sviluppatori e forse più veloce e meno soggetto a errori rispetto alla copia del database di lavoro e al passaggio a un altro sviluppatore.

Al rilascio è possibile congelare quello script e quindi creare script delta per il rilascio successivo che ha solo le modifiche dallo schema iniziale al nuovo. Questo potrebbe anche abbattere i nuovi oggetti creati nel delta prima di ricrearli in modo che possano essere facilmente rieseguiti senza dover cancellare l'intero database.

se usi Visual Studio 2010 allora

apri la cartella App_Data della soluzione e fai doppio clic sul file MDF. fai clic con il tasto destro del mouse sulla tabella, nel menu seleziona " Mostra dati tabella " ;. seleziona tutte le righe ed eliminale tutte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top