2011-11-01 4 views
6

Desidero essere in grado di avere un gruppo di script di tabella di creazione diversi salvati e memorizzati separatamente.Microsoft SQL Server Management Studio esegue lo script dall'interno di uno script

Per creare l'intero database, avrei un file master .sql che richiama tutti gli script in modo che tutte le chiavi esterne nelle tabelle vengano create nell'ordine corretto.

Potrei quindi anche creare uno script per eliminare l'intera struttura della tabella facendoli cadere tutti nell'ordine inverso.

C'è un modo per farlo?

risposta

13

Utilizzando l'oscuro comando r: SQLCMD:

: r < filename>

Analizza istruzioni Transact-SQL aggiuntivi e sqlcmd comandi dal file specificato da nella cache dichiarazione.

dire il vostro script creare sono createT1.sql e createT2.sql quindi il tuo padrone .sql file di sarebbe qualcosa di simile:

create database foo; 
go 

use foo; 
go 

:r createT1.sql 
:r createT2.sql 
go 

Questa sintassi funziona in SSMS così, fino a quando si attiva la modalità SQLCMD, vedere Editing SQLCMD Scripts with Query Editor . Anche la libreria dbutilsqlcmd supporta l'estensione :r se si desidera incorporarla nell'applicazione.

1

Dal momento che si mette SSMS destra nel titolo della tua domanda, ho intenzione di assumere che si vuole essere in grado di farlo da lì.

È possibile eseguire SSMS in modalità SQLCMD. Questo dovrebbe darti molta più flessibilità. Puoi vedere una rapida dimostrazione di esso here o cercare ulteriori informazioni su Microsoft's website.

Per la semplice funzionalità della riga di comando, personalmente utilizzerei uno script PowerShell. È possibile aggiungere i cmdlet Microsoft SQL per consentire la connessione a un server SQL oppure eseguire il rollover da soli con SMO o utilizzare una soluzione di terze parti, come SQLPSX open source.

+0

wow queste risposte sono state tutte fantastiche grazie mille a tutti! sicuramente posterò molto qui se tutte le risposte sono buone hahaha ^. ^ – chilleo