Condividi tramite


Modifica di script SQLCMD nell'editor Transact-SQL

Quando si scrivono o modificano script nell'editor Transact-SQL, è possibile utilizzare una combinazione di comandi Transact-SQL e SQLCMD se prima si abilita la modalità SQLCMD.Per ulteriori informazioni, vedere Procedura: abilitare la modalità SQLCMD nell'editor Transact-SQL.

Scrittura e modifica di script SQLCMD

Se si desidera includere comandi SQLCMD e comandi Transact-SQL nello stesso script, è necessario verificare che lo script sia conforme ai requisiti seguenti:

  • I comandi SQLCMD devono essere specificati come prima istruzione di una riga.

  • È consentito un solo comando SQLCMD per riga.

  • I comandi SQLCMD possono essere preceduti da commenti o da spazio vuoto.

  • I caratteri per i commenti a riga singola sono due segni meno (--) e devono essere visualizzati all'inizio della riga.I caratteri per i commenti impediscono l'esecuzione dei comandi SQLCMD.

  • Prima di ogni comando SQLCMD, è necessario inserire due punti (:) all'inizio di una riga per distinguerlo chiaramente dai comandi Transact-SQL.Le sole eccezioni sono i comandi exit e !!, per i quali i due punti sono facoltativi.

  • È possibile utilizzare variabili di ambiente e variabili definite come parte di uno script SQLCMD, ma non è possibile utilizzare variabili SQLCMD incorporate.

Sintassi SQLCMD supportata

È possibile utilizzare i comandi seguenti:

  • :r NomeFile
    Analizza le istruzioni Transact-SQL e i comandi SQLCMD aggiuntivi dal file specificato da NomeFile nella cache delle istruzioni. NomeFile viene letto in relazione alla directory di avvio per Visual Studio.Il file viene letto ed eseguito dopo che è stato rilevato un carattere di terminazione del batch.È possibile eseguire più comandi :r.Il file può includere qualsiasi comando SQLCMD, incluso il carattere di terminazione batch definito in Strumenti, Opzioni.È possibile utilizzare :r in uno script pre-distribuzione o post-distribuzione per includere altri script.

  • :setvar Valore variabile
    Definisce le variabili di scripting.Le variabili di scripting dispongono del seguente formato: $(Variable).I nomi delle variabili non fanno distinzione tra maiuscole e minuscole.Se una variabile definita mediante :Setvar e una variabile di ambiente dispongono dello stesso nome, la variabile definita con :setvar ha la precedenza.I nomi delle variabili non devono contenere spazi.I nomi delle variabili non possono disporre dello stesso formato delle espressioni con variabili, ad esempio $(var).Se il valore stringa della variabile di scripting contiene spazi vuoti, è necessario racchiudere il valore tra virgolette.Se per una variabile di scripting non viene specificato alcun valore, la variabile di scripting viene eliminata.

  • :connect NomeServer[\NomeIstanza] [-l Timeout] [-U NomeUtente [-P Password]]
    Si connette a un'istanza di SQL Server e chiude la connessione corrente dopo che è trascorso il numero di secondi specificati da Timeout.È possibile specificare "-l 0" per un timeout infinito o un numero positivo di secondi, ad esempio "-l 30".Se non si specificano opzioni né variabili di ambiente per NomeUtente e Password, per l'accesso viene utilizzata la modalità di autenticazione di Windows. Quando si esegue il comando SQLCMD connect nell'editor Transact-SQL, verrà tuttavia richiesto di connettersi a un server database con la finestra Connetti al Motore di database.

  • :on error [exit | ignore]
    Imposta l'azione da eseguire quando si verifica un errore durante l'esecuzione dello script o del batch.Se si utilizza l'opzione exit, l'esecuzione termina con il valore di errore appropriato.Se si utilizza l'opzione ignore, l'editor Transact-SQL ignora l'errore e continua a eseguire il batch o lo script.Un messaggio di errore viene stampato per impostazione predefinita.

  • :out Nomefile | stderr | stdout
    Reindirizzare tutti i risultati della query al file specificato da Nomefile o alla scheda Messaggi.In Visual Studio, stderr e stdout inviano l'output alla scheda Messaggi. Il comando out può essere utilizzato più volte in uno script.Per impostazione predefinita, l'output viene inviato alla scheda Messaggi.Se viene specificato un Nomefile, Visual Studio crea o apre un file per ricevere i risultati della query.Se il file esiste già, esso verrà troncato a zero byte prima della scrittura dell'output.

  • :error Nomefile | stderr | stdout
    Reindirizzare tutto l'output di errore al file specificato da Nomefile o alla scheda Messaggi.In Visual Studio, stderr e stdout inviano l'output alla scheda Messaggi.  Il comando error può essere utilizzato più volte in uno script.Per impostazione predefinita, l'output di errore viene inviato a stderr.Se viene specificato un Nomefile, Visual Studio crea o apre un file per ricevere il messaggio di errore.Se il file esiste già, esso verrà troncato a zero byte prima della scrittura del messaggio di errore.

  • [:]exit
    Arresta il batch corrente senza eseguire il batch o restituire un valore.

  • [:]exit()
    Esegue il batch, quindi si arresta, senza restituire alcun valore.

  • [:]exit(Query)
    Esegue il batch (inclusa la Query), restituisce i risultati della Query, quindi si arresta.

  • [:]!!Comando sistema operativo
    Esegue i comandi del sistema operativo nel computer che esegue Visual Studio.Per eseguire un comando del sistema operativo, digitare due punti esclamativi all'inizio della riga (!!) e quindi specificare il comando del sistema operativo desiderato.

Nota

Poiché SQLCMD non viene avviato dalla riga di comando, l'esecuzione dell'editor Transact-SQL in modalità SQLCMD presenta alcune limitazioni.Non è possibile passare parametri della riga di comando come variabili e poiché l'editor Transact-SQL non è in grado di rispondere ai prompt del sistema operativo, evitare di eseguire istruzioni interattive.

I comandi SQLCMD non inclusi nell'elenco precedente non sono supportati nell'editor Transact-SQL.Quando viene eseguito uno script contenente parole chiave SQLCMD non supportate, per ognuna di esse l'editor Transact-SQL invierà un messaggio "Command <unsupported command> is not supported. String was not processed." alla destinazione.Lo script verrà eseguito, ma i comandi non supportati verranno ignorati.

Codifica a colori negli script SQLCMD

Quando Modalità SQLCMD è abilitato, gli script avranno codifica a colori.La codifica a colori per le parole chiave Transact-SQL rimarrà invariata.I comandi SQLCMD vengono presentati con uno sfondo ombreggiato.

Esempi

Nell'esempio seguente vengono utilizzate istruzioni SQLCMD per creare una cartella di output denominata c:\TempSqlcmdOutput e un file di output denominato testoutput.txt.Nell'esempio vengono inoltre eseguite due istruzioni SELECTTransact-SQL e un altro comando SQLCMD per stampare la directory corrente del programma Visual Studio.Il file risultante contiene l'output del messaggio dall'istruzione DIR, seguito dall'output dei risultati dalle istruzioni Transact-SQL.In questo esempio si presume che sia già stata stabilita una connessione a un'istanza di SQL Server e che Modalità SQLCMD sia stata abilitata.

!!mkdir c:\TempSqlcmdOutput
:out c:\TempSqlCmdOutput\testoutput.txt
select @@VERSION as 'Server Version'
!!dir
GO
select @@SERVERNAME as 'Server Name'
GO 4

Vedere anche

Attivitá

Procedura: eseguire una query

Procedura: impostare le opzioni per l'esecuzione e i risultati delle query

Concetti

Cenni preliminari sui risultati delle query