Crea script SQL che creano database e tabelle


102

Ho un database SQL e tabelle che vorrei replicare in un altro SQL Server. Vorrei creare uno script SQL che crei il database e le tabelle in un unico script.

Posso creare script "Crea" utilizzando SQL Management Studio per ogni caso (Database e Tabelle), ma vorrei sapere se sarebbe sufficiente combinare entrambi gli script "Crea" in un unico script.

Grazie.


26
potresti cambiare la risposta accettata?
skolima

1
@skolima è d'accordo, la risposta accettata (di Clayton) alla fine otterrà il risultato, ma la risposta di CJM è molto più veloce
elmer007

Risposte:


18

In SQL Server Management Studio è possibile fare clic con il pulsante destro del mouse sul database che si desidera replicare e selezionare "Script Database as" per fare in modo che lo strumento crei il file SQL appropriato per replicare quel database su un altro server. È possibile ripetere questo processo per ogni tabella che si desidera creare e quindi unire i file in un unico file SQL. Non dimenticare di aggiungere un'istruzione using dopo aver creato il database ma prima di qualsiasi creazione della tabella.

Nelle versioni più recenti di SQL Server è possibile ottenerlo in un file in SSMS.

  1. Fare clic con il pulsante destro del mouse su un database.
  2. Compiti
  3. Genera script

Verrà avviata una procedura guidata in cui è possibile eseguire lo script dell'intero database o solo di parti. Non sembra esserci un modo T-SQL per farlo.

Genera script di SQL Server


182
Continua a scorrere ... Il metodo di CJM è migliore del 99,99999%
ewitkows

La risposta di CJM non è ancora sufficiente. Dopo l'applicazione del metodo CJM dovresti applicare anche il metodo Shawna Jacobs.
Andrzej Martyna

Comunque per fare questo è SQL standard per mysql per esempio?
Benjamin Goodacre

378

Sebbene la risposta di Clayton ti porterà lì (alla fine), in SQL2005 / 2008 / R2 / 2012 hai un'opzione molto più semplice:

Fare clic con il pulsante destro del mouse sul database, selezionare Taskse quindi Generate Scripts, che avvierà la procedura guidata di script. Ciò consente di generare un singolo script in grado di ricreare l'intero database, inclusi tabella / indici e vincoli / procedure memorizzate / funzioni / utenti / ecc. Ci sono una moltitudine di opzioni che puoi configurare per personalizzare l'output, ma la maggior parte è autoesplicativa.

Se sei soddisfatto delle opzioni predefinite, puoi eseguire l'intero lavoro in pochi secondi.

Se desideri ricreare i dati nel database (come una serie di INSERTI), ti consiglio anche il pacchetto di strumenti SSMS (gratuito per la versione SQL 2008, a pagamento per la versione SQL 2012).


5
Questo è eccellente, l'ho appena fatto e mi ha risparmiato un sacco di tempo.
Bill Sambrone

@CJM Sto pensando che QUASI ti amo! :-P
Piero Alberto

Ho seguito esattamente questi passaggi ma ricevo ancora tantissimi errori e non riesco a correggerli. Qualsiasi aiuto?
user1789573

Ti suggerisco di pubblicare la tua domanda al riguardo: assicurati di pubblicare i dettagli sui passaggi che hai eseguito e sugli errori che hai ricevuto.
CJM

@ user1789573 - come ha scritto Shawna Jacobs - SSMS non si preoccupa delle dipendenze (peccato per il devteam SSMS!) quindi avrai tonnellate di errori "di progettazione". Segui Shawna Jacobs come risposta per affrontare questa debolezza di SSMS.
Andrzej Martyna

9

Un'ottima spiegazione può essere trovata qui: Genera script in SQL Server Management Studio

Courtesy Ali Issa Ecco cosa devi fare:

  1. Fare clic con il pulsante destro del mouse sul database (non sulla tabella) e selezionare attività -> genera script
  2. Avanti -> seleziona la tabella / le tabelle richieste (da selezionare oggetti di database specifici)
  3. Avanti -> fai clic su avanzate -> tipi di dati su script = schema e dati

Se vuoi creare uno script che generi solo le tabelle (nessun dato) puoi saltare la parte avanzata delle istruzioni!


7

Non sono sicuro del motivo per cui SSMS non tiene conto dell'ordine di esecuzione, ma semplicemente non lo fa. Questo non è un problema per i database di piccole dimensioni, ma cosa succede se il tuo database ha 200 oggetti? In tal caso, l'ordine di esecuzione è importante perché non è davvero facile passare attraverso tutti questi.

Per gli script non ordinati generati da SSMS puoi andare a seguire

a) Esegui script (alcuni oggetti verranno inseriti altri no, ci saranno degli errori)

b) Rimuovere tutti gli oggetti dallo script che sono stati aggiunti al database

c) Tornare ad a) fino a quando tutto sarà finalmente eseguito

L'opzione alternativa è quella di utilizzare strumenti di terze parti come ApexSQL Script o qualsiasi altro strumento già menzionato in questo thread (toolpack SSMS, Red Gate e altri).

Tutto ciò si prenderà cura delle dipendenze per te e ti farà risparmiare ancora più tempo.


1

Sì, puoi aggiungere tutte le istruzioni SQL che desideri in un singolo script. Solo una cosa da notare: l'ordine è importante. Non puoi INSERIRE in una tabella finché non la CREA; non è possibile impostare una chiave esterna finché non viene inserita la chiave primaria.

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.