Ho una serie di script che devono essere eseguiti in un certo ordine. Vorrei creare un "file master" che elenca tutti gli altri file e il loro ordine corretto. Fondamentalmente come un file include da C ++ o ASP / VBScript.
Ho una serie di script che devono essere eseguiti in un certo ordine. Vorrei creare un "file master" che elenca tutti gli altri file e il loro ordine corretto. Fondamentalmente come un file include da C ++ o ASP / VBScript.
Risposte:
Se si utilizza SQLCMD , è possibile utilizzare :r FileNameper includere un file .sql separato.
: r Nomefile
Analizza ulteriori istruzioni T-SQL e comandi SQLCMD dal file specificato da FileName nella cache delle istruzioni. FileName viene letto relativamente alla directory di avvio per Visual Studio. Il file viene letto ed eseguito dopo aver incontrato un terminatore batch. È possibile emettere più comandi: r. Il file può includere qualsiasi comando SQLCMD, incluso il terminatore batch definito in Strumenti, Opzioni. È possibile utilizzare: r in uno script pre-distribuzione o post-distribuzione per includere altri script.
Nel senso degli antichi preprocessori C sicuramente no
Se si dispone di una serie di file con percorsi assoluti indicati, che si desidera includere in un ordine incondizionato, è possibile utilizzare lo strumento da riga di comando sqlcmd o utilizzare SSMS in sqlcmdmode come indicato da @mfredrickson e @Marian.
Ma se vuoi percorsi relativi o inclusioni condizionali devi usare un wrapper che chiama sqlcmd (o uno dei suoi predecessori obsoleti isql o osql).
Attualmente al mio lavoro in questa situazione, sto rivedendo ed estendendo il vecchio codice vbs e il codice hta. Non sono completamente felice, ma è una decisione pragmatica. Funziona e l'utente finale è a casa con la GUI hta e non è necessaria alcuna installazione aggiuntiva del software.
Per un nuovo design vorrei iniziare a pensare di utilizzare WPF e PowerShell per concludere le chiamate di sqlcmd, ma con i nostri attuali clienti non posso presumere la presenza di PowerShell V2.
Anche in passato abbiamo scritto semplici lotti di cmd per questo scopo, alcuni dei quali ancora in uso.
Immagino che ci siano strumenti attuali, in particolare quelli destinati ai flussi di lavoro, che potrebbero essere adatti qui. Non ho familiarità con quelli.
Insieme alla modalità SQLCMD in Management Studio, è anche possibile utilizzare un file batch da utilizzare come file master per disporre e chiamare tutti i file sql utilizzando l' utilità SQLCMD .
La modalità SQLCMD è una simulazione dell'utilizzo delle utility all'interno di Management Studio, quindi non c'è grande differenza tra le modalità. Tranne che qualche volta preferisco eseguire batch (non più apertura di M Studio ... caricamento corretto db ... ecc.). Preferisco configurare tutto nel batch, inclusi i file di output.
Sono d'accordo, un preprocessore T-SQL è estremamente necessario. Ho sviluppato il mio in C #, che mi ha impiegato un'ora. Oltre al controllo sull'ordine di esecuzione degli script SQL, mi consente anche di avere macro che assomigliano a UDF scalari e sono comode da usare, ma offrono prestazioni veloci come UDF in linea.
Mi piace la risposta di bernd_k . A seconda della modalità di denominazione degli script, ad esempio l'inclusione di un numero, è possibile utilizzare SQL Server PowerShell (SQLPS) se si esegue SQL Server 2008 o versione successiva. Quindi, anche se si utilizza SQL 2005, è possibile utilizzare PowerShell e SMO per il 2005.
Nota a margine: credo che SQLCMD alla fine verrà inserito nell'elenco deprezzato e verrà sostituito con SQLPS, PowerShell.
Ci sono anche alcune altre opzioni.
SQLCMDfammelo sapere, perché la maggior parte di ciò che trovo si riferisce a PowerShell . Inoltre non vedo il riferimento dove sqlcmdviene utilizzato con SSDT tranne forse per il confronto dello schema, ma non uso mai gli script generati.