Utilità sqlcmdsqlcmd Utility

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)sìDatabase SQL di AzuresìAzure SQL Data Warehouse sìParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Per SQL Server 2014 e inferiore, vedere utilità sqlcmd.For SQL Server 2014 and lower, see sqlcmd Utility.

Il sqlcmd utilità consente di immettere istruzioni Transact-SQL, procedure di sistema e file script al prompt dei comandi, in Editor di Query in modalità SQLCMD, in un file di script di Windows o in un passaggio di processo del sistema operativo (Cmd.exe) di un processo di SQL Server Agent.The sqlcmd utility lets you enter Transact-SQL statements, system procedures, and script files at the command prompt, in Query Editor in SQLCMD mode, in a Windows script file or in an operating system (Cmd.exe) job step of a SQL Server Agent job. Questa utilità utilizza ODBC per eseguire batch Transact-SQL.This utility uses ODBC to execute Transact-SQL batches.

Nota

Le versioni più recenti dell'utilità sqlcmd sono disponibili come versione Web nell' Area download.The most recent versions of the sqlcmd utility is available as a web release from the Download Center. È necessario versione 13.1 o superiore per il supporto di Always Encrypted (-g) e l'autenticazione di Azure Active Directory (-G).You need version 13.1 or higher to support Always Encrypted (-g) and Azure Active Directory authentication (-G). Nel computer potrebbero essere installate diverse versioni di sqlcmd.exe.(You may have several versions of sqlcmd.exe installed on your computer. Assicurarsi di usare la versione corretta.Be sure you are using the correct version. Per determinare la versione, eseguire sqlcmd -?.To determine the version, execute sqlcmd -?.)

Per eseguire istruzioni sqlcmd in SSMS, selezionare la modalità SQLCMD dal menu a discesa Query nella parte superiore della struttura di navigazione.To run sqlcmd statements in SSMS, select SQLCMD Mode from the top navigation Query Menu dropdown.

Importante

SQL Server Management StudioSQL Server Management Studio(SSMS) usa Microsoft .NET Framework.NET Framework SqlClient per l'esecuzione di regolari e la modalità SQLCMD Editor di Query. (SSMS) uses the Microsoft .NET Framework.NET Framework SqlClient for execution in regular and SQLCMD mode in Query Editor. Se sqlcmd viene eseguita dalla riga di comando, sqlcmd usa il driver ODBC.When sqlcmd is run from the command line, sqlcmd uses the ODBC driver. Poiché possono essere applicate opzioni predefinite diverse, l'esecuzione della stessa query nella modalità SQLCMD di SQL Server Management StudioSQL Server Management Studio e nell'utilità sqlcmd potrebbe generare risultati diversi.Because different default options may apply, you might see different behavior when you execute the same query in SQL Server Management StudioSQL Server Management Studio in SQLCMD Mode and in the sqlcmd utility.

L'utilità sqlcmd non richiede attualmente uno spazio tra l'opzione della riga di comando e il valore.Currently, sqlcmd does not require a space between the command line option and the value. In una versione futura, tuttavia, è possibile che tra l'opzione della riga di comando e il valore sia necessario inserire uno spazio.However, in a future release, a space may be required between the command line option and the value.

Altri argomenti:Other topics:

SintassiSyntax

sqlcmd   
   -a packet_size  
   -A (dedicated administrator connection)  
   -b (terminate batch job if there is an error)  
   -c batch_terminator  
   -C (trust the server certificate)  
   -d db_name  
   -e (echo input)  
   -E (use trusted connection)  
   -f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage] 
   -g (enable column encryption) 
   -G (use Azure Active Directory for authentication)
   -h rows_per_header  
   -H workstation_name  
   -i input_file  
   -I (enable quoted identifiers)  
   -j (Print raw error messages)
   -k[1 | 2] (remove or replace control characters)  
   -K application_intent  
   -l login_timeout  
   -L[c] (list servers, optional clean output)  
   -m error_level  
   -M multisubnet_failover  
   -N (encrypt connection)  
   -o output_file  
   -p[1] (print statistics, optional colon format)  
   -P password  
   -q "cmdline query"  
   -Q "cmdline query" (and exit)  
   -r[0 | 1] (msgs to stderr)  
   -R (use client regional settings)  
   -s col_separator  
   -S [protocol:]server[instance_name][,port]  
   -t query_timeout  
   -u (unicode output file)  
   -U login_id  
   -v var = "value"  
   -V error_severity_level  
   -w column_width  
   -W (remove trailing spaces)  
   -x (disable variable substitution)  
   -X[1] (disable commands, startup script, environment variables, optional exit)  
   -y variable_length_type_display_width  
   -Y fixed_length_type_display_width  
   -z new_password   
   -Z new_password (and exit)  
   -? (usage)  

Opzioni della riga di comandoCommand-line Options

Opzioni correlate all'account di accessoLogin-Related Options
-A-A
Registri in SQL Server con una connessione amministrativa dedicata (DAC).Logs in to SQL Server with a Dedicated Administrator Connection (DAC). Questo tipo di connessione viene utilizzato per eseguire la risoluzione dei problemi a livello di serverThis kind of connection is used to troubleshoot a server. e funziona solo in computer server che supportano le connessioni DAC.This will only work with server computers that support DAC. Se la connessione DAC non è disponibile, l'utilità sqlcmd genera un messaggio di errore e viene chiusa.If DAC is not available, sqlcmd generates an error message and then exits. Per altre informazioni sulle connessioni DAC, vedere Connessione di diagnostica per gli amministratori di database.For more information about DAC, see Diagnostic Connection for Database Administrators. L'opzione - A non è supportata con l'opzione -G.The -A option is not supported with the -G option. Quando ci si connette al Database SQL tramite - A, è necessario essere un amministratore di SQL server.When connecting to SQL Database using -A, you must be a SQL server administrator. L'applicazione livello dati non è disponibile per un amministratore di Azure Active Directory.The DAC is not availble for an Azure Active Directory adminstrator.

-C-C
Questa opzione viene utilizzata dal client per configurare l'attendibilità implicita del certificato del server senza necessità di convalidaThis switch is used by the client to configure it to implicitly trust the server certificate without validation. ed equivale all'opzione ADO.NET TRUSTSERVERCERTIFICATE = true.This option is equivalent to the ADO.NET option TRUSTSERVERCERTIFICATE = true.

-d db_name-d db_name
Esegue un'istruzione USE db_name all'avvio di sqlcmd.Issues a USE db_name statement when you start sqlcmd. Questa opzione imposta la variabile di scripting SQLCMDDBNAME di sqlcmd .This option sets the sqlcmd scripting variable SQLCMDDBNAME. per specificare il database iniziale.This specifies the initial database. Il valore predefinito corrisponde alla proprietà relativa al database predefinito dell'accesso.The default is your login's default-database property. Se il database non esiste, viene generato un messaggio di errore e l'utilità sqlcmd viene chiusa.If the database does not exist, an error message is generated and sqlcmd exits.

-l login_timeout-l login_timeout
Specifica il numero dei secondi che devono trascorrere prima che si verifichi il timeout di un accesso di sqlcmd al driver ODBC quando si tenta la connessione a un server.Specifies the number of seconds before a sqlcmd login to the ODBC driver times out when you try to connect to a server. Questa opzione imposta la variabile di scripting SQLCMDLOGINTIMEOUT di sqlcmd .This option sets the sqlcmd scripting variable SQLCMDLOGINTIMEOUT. Il valore predefinito per il timeout di accesso a sqlcmd è otto secondi.The default time-out for login to sqlcmd is eight seconds. Quando si usa l'opzione -G per la connessione al database SQL o a SQL Data Warehouse e l'autenticazione tramite Azure Active Directory, si consiglia un valore di timeout di almeno 30 secondi.When using the -G option to connect to SQL Database or SQL Data Warehouse and authenticate using Azure Active Directory, a timeout value of at least 30 seconds is recommended. Il valore del timeout deve essere un numero compreso tra 0 e 65.534.The login time-out must be a number between 0 and 65534. Se il valore specificato non è numerico o non è compreso in tale intervallo, sqlcmd genera un messaggio di errore.If the value supplied is not numeric or does not fall into that range, sqlcmd generates an error message. Il valore 0 specifica un timeout infinito.A value of 0 specifies time-out to be infinite.

-E-E
Utilizza una connessione trusted anziché un nome utente e una password per accedere a SQL Server.Uses a trusted connection instead of using a user name and password to log on to SQL Server . In caso di omissione di -E , sqlcmd usa l'opzione della connessione trusted per impostazione predefinita.By default, without -E specified, sqlcmd uses the trusted connection option.

L'opzione -E ignora eventuali impostazioni delle variabili di ambiente relative a nome utente e password, ad esempio SQLCMDPASSWORD.The -E option ignores possible user name and password environment variable settings such as SQLCMDPASSWORD. Se si usa l'opzione -E in combinazione con l'opzione -U o con l'opzione -P , viene generato un messaggio di errore.If the -E option is used together with the -U option or the -P option, an error message is generated.

-g-g
Imposta la crittografia delle colonne su Enabled.Sets the Column Encryption Setting to Enabled. Per altre informazioni, vedere Always Encrypted.For more information, see Always Encrypted. Sono supportate solo le chiavi master presenti nell'archivio certificati Windows.Only master keys stored in Windows Certificate Store are supported. L'opzione -g richiede almeno sqlcmd versione 13.1.The -g switch requires at least sqlcmd version 13.1. Per determinare la versione, eseguire sqlcmd -?.To determine your version, execute sqlcmd -?.

-G-G
Questa opzione viene usata dal client durante la connessione al database SQL o a SQL Data Warehouse per specificare che l'utente venga autenticato tramite l'autenticazione di Azure Active Directory.This switch is used by the client when connecting to SQL Database or SQL Data Warehouse to specify that the user be authenticated using Azure Active Directory authentication. Questa opzione imposta la variabile di scripting SQLCMDUSEAAD = true di sqlcmd .This option sets the sqlcmd scripting variable SQLCMDUSEAAD = true. L'opzione -G richiede almeno sqlcmd versione 13.1.The -G switch requires at least sqlcmd version 13.1. Per determinare la versione, eseguire sqlcmd -?.To determine your version, execute sqlcmd -?. Per altre informazioni, vedere Connessione al database SQL oppure a SQL Data Warehouse con l'autenticazione di Azure Active Directory.For more information, see Connecting to SQL Database or SQL Data Warehouse By Using Azure Active Directory Authentication. L'opzione - A non è supportata con l'opzione -G.The -A option is not supported with the -G option.

Importante

L'opzione -G si applica solo al database SQL di Azure e ad Azure Data Warehouse.The -G option only applies to Azure SQL Database and Azure Data Warehouse.

  • Nome utente e password di Azure Active Directory:Azure Active Directory Username and Password:

    Quando si vuole usare nome utente e password di Azure Active Directory, è possibile fornire l'opzione -G e anche usare nome utente e password fornendo le opzioni -U e -P .When you want to use an Azure Active Directory user name and password, you can provide the -G option and also use the user name and password by providing the -U and -P options.

    Sqlcmd -S testsrv.database.windows.net -d Target_DB_or_DW -U bob@contoso.com -P MyAADPassword -G 
    

    Questo genera la seguente stringa di connessione nel back-end:This will generate the following connection string in the backend:

     SERVER = Target_DB_or_DW.testsrv.database.windows.net;UID= bob@contoso.com;PWD=MyAADPassword;AUTHENTICATION = ActiveDirectoryPassword 
    
  • Integrazione con Azure Active DirectoryAzure Active Directory Integrated

    Per l'autenticazione integrata di Azure Active Directory, fornire l'opzione -G senza nome utente o password:For Azure Active Directory Integrated authentication, provide the -G option without a user name or password:

    Sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net  -G
    

    Questo genera la seguente stringa di connessione nel back-end:This will generate the following connection string in the backend:

    SERVER = Target_DB_or_DW.testsrv.database.windows.net Authentication = ActiveDirectoryIntegrated; Trusted_Connection=NO
    
    Nota

    L'opzione -E (Trusted_Connection) non può essere usata insieme all'opzione -G.The -E option (Trusted_Connection) cannot be used along with the -G option).

-H workstation_name-H workstation_name
Nome di una workstation.A workstation name. Questa opzione imposta la variabile di scripting SQLCMDWORKSTATION di sqlcmd .This option sets the sqlcmd scripting variable SQLCMDWORKSTATION. Il nome della workstation è riportato nella colonna hostname della vista del catalogo sys.processes e può essere ottenuto usando la stored procedure sp_who.The workstation name is listed in the hostname column of the sys.sysprocesses catalog view and can be returned using the stored procedure sp_who. Se questa opzione viene omessa, il valore predefinito è costituito dal nome del computer corrente.If this option is not specified, the default is the current computer name. È possibile usare questo nome per identificare sessioni di sqlcmd diverse.This name can be used to identify different sqlcmd sessions.

-j Visualizza sullo schermo messaggi di errore non elaborati.-j Prints raw error messages to the screen.

-K application_intent-K application_intent
Dichiara il tipo di carico di lavoro dell'applicazione in caso di connessione a un server.Declares the application workload type when connecting to a server. L'unico valore attualmente supportato è ReadOnly.The only currently supported value is ReadOnly. Se l'opzione -K non è specificata, l'utilità sqlcmd non supporta la connettività a una replica secondaria in un gruppo di disponibilità AlwaysOn.If -K is not specified, the sqlcmd utility will not support connectivity to a secondary replica in an Always On availability group. Per altre informazioni, vedere Repliche secondarie attive: Repliche secondarie leggibili (gruppi di disponibilità Always On)For more information, see Active Secondaries: Readable Secondary Replica (Always On Availability Groups)

-M multisubnet_failover-M multisubnet_failover
Specificare sempre - M quando ci si connette al listener del gruppo di disponibilità di un gruppo di disponibilità di SQL Server o un'istanza Cluster di Failover di SQL Server.Always specify -M when connecting to the availability group listener of a SQL Server availability group or a SQL Server Failover Cluster Instance. Tramite-M viene fornito un rilevamento più veloce di una connessione al server attualmente attivo.-M provides for faster detection of and connection to the (currently) active server. Se non si specifica –M, significa che l'opzione -M è disattivata.If –M is not specified, -M is off. Per altre informazioni su Gruppi di disponibilità Always OnAlways On availability groups, vedere Listener del gruppo di disponibilità, connettività client e failover dell'applicazione (SQL Server), Creazione e configurazione di gruppi di disponibilità (SQL Server), [Clustering di failover e gruppi di disponibilità Always On (SQL Server)](https://msdn.microsoft.comlibrary/ff929171.aspx, e [Repliche secondarie attive: Repliche secondarie leggibili (gruppi di disponibilità Always On)](https://msdn.microsoft.com/library/ff878253.aspx.For more information about Gruppi di disponibilità Always OnAlways On availability groups, see Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server), Creation and Configuration of Availability Groups (SQL Server), [Failover Clustering and Always On Availability Groups (SQL Server)](https://msdn.microsoft.comlibrary/ff929171.aspx, and [Active Secondaries: Readable Secondary Replicas(Always On Availability Groups)](https://msdn.microsoft.com/library/ff878253.aspx.

-N-N
Questa opzione viene utilizzata dal client per richiedere una connessione crittografata.This switch is used by the client to request an encrypted connection.

-P password-P password
Password specificata dall'utente.Is a user-specified password. Alle password viene applicata la distinzione tra maiuscole e minuscole.Passwords are case sensitive. Se si usa l'opzione -U omettendo l'opzione -P e la variabile di ambiente SQLCMDPASSWORD non è stata impostata, sqlcmd chiede all'utente di immettere una password.If the -U option is used and the -P option is not used, and the SQLCMDPASSWORD environment variable has not been set, sqlcmd prompts the user for a password. Per specificare una password Null (non consigliato), usare -P "".To specify a null password (not recommended) use -P "". E ricordare sempre di:And remember to always:

Usare una password complessa.Use a strong password!!

La richiesta della password viene visualizzata mediante la stampa nella console, come indicato di seguito: Password:The password prompt is displayed by printing the password prompt to the console, as follows: Password:

L'input dell'utente è nascosto.User input is hidden. L'input non viene pertanto visualizzato e il cursore rimane in posizione.This means that nothing is displayed and the cursor stays in position.

La variabile di ambiente SQLCMDPASSWORD consente di impostare una password predefinita per la sessione corrente.The SQLCMDPASSWORD environment variable lets you set a default password for the current session. Per tale motivo, non è necessario specificare le password a livello di codice in file batch.Therefore, passwords do not have to be hard-coded into batch files.

L'esempio seguente imposta prima di tutto la variabile SQLCMDPASSWORD al prompt dei comandi e quindi accede all'utilità sqlcmd .The following example first sets the SQLCMDPASSWORD variable at the command prompt and then accesses the sqlcmd utility. Al prompt dei comandi digitare:At the command prompt, type:

SET SQLCMDPASSWORD= p@a$$w0rd
Al prompt dei comandi successivo digitare:At the following command prompt, type:

sqlcmd

Se la combinazione di nome utente e password non è corretta, viene generato un messaggio di errore.If the user name and password combination is incorrect, an error message is generated.

NOTANOTE! La variabile di ambiente OSQLPASSWORD è disponibile per motivi di compatibilità con le versioni precedenti.The OSQLPASSWORD environment variable was kept for backward compatibility. La variabile di ambiente SQLCMDPASSWORD è prioritaria rispetto alla variabile di ambiente OSQLPASSWORD. Questo significa che è possibile usare sqlcmd e osql insieme senza creare conflitti e che gli script precedenti continueranno a funzionare correttamente.The SQLCMDPASSWORD environment variable takes precedence over the OSQLPASSWORD environment variable; this means that sqlcmd and osql can be used next to each other without interference and that old scripts will continue to work.

Se si usa l'opzione -P in combinazione con l'opzione -E , viene generato un messaggio di errore.If the -P option is used with the -E option, an error message is generated.

Se l'opzione -P è seguita da più di un argomento, viene generato un messaggio di errore e il programma viene chiuso.If the -P option is followed by more than one argument, an error message is generated and the program exits.

-S [protocol:]server[\instance_name][,port]-S [protocol:]server[\instance_name][,port]
Specifica l'istanza di SQL Server a cui connettersi.Specifies the instance of SQL Server to which to connect. Imposta la variabile di scripting SQLCMDSERVER di sqlcmd .It sets the sqlcmd scripting variable SQLCMDSERVER.

Specificare nome_server per connettersi all'istanza predefinita di SQL Server nel computer server.Specify server_name to connect to the default instance of SQL Server on that server computer. Specificare nome_server [ \ instance_name ] per connettersi a un'istanza denominata di SQL Server nel computer server.Specify server_name [ \instance_name ] to connect to a named instance of SQL Server on that server computer. Se si specifica alcun server, sqlcmd si connette all'istanza predefinita di SQL Server nel computer locale.If no server computer is specified, sqlcmd connects to the default instance of SQL Server on the local computer. Questa opzione è necessaria per l'esecuzione di sqlcmd da un computer remoto in rete.This option is required when you execute sqlcmd from a remote computer on the network.

protocol può essere tcp (TCP/IP), lpc (memoria condivisa) o np (named pipe).protocol can be tcp (TCP/IP), lpc (shared memory), or np (named pipes).

Se non si specifica un nome_server [ \ instance_name ] quando si avvia sqlcmd, SQL Server cerca e Usa la variabile di ambiente SQLCMDSERVER.If you do not specify a server_name [ \instance_name ] when you start sqlcmd, SQL Server checks for and uses the SQLCMDSERVER environment variable.

Nota

La variabile di ambiente OSQLSERVER è disponibile per motivi di compatibilità con le versioni precedenti.The OSQLSERVER environment variable has been kept for backward compatibility. La variabile di ambiente SQLCMDSERVER è prioritaria rispetto alla variabile di ambiente OSQLSERVER. Questo significa che è possibile usare sqlcmd e osql insieme senza creare conflitti e che gli script precedenti continueranno a funzionare correttamente.The SQLCMDSERVER environment variable takes precedence over the OSQLSERVER environment variable; this means that sqlcmd and osql can be used next to each other without interference and that old scripts will continue to work.

-U login_id-U login_id
È il nome di accesso o il nome utente di un database indipendente.Is the login name or contained database user name. Per gli utenti dei database indipendenti, è necessario fornire l'opzione del nome di database (-d).For contained database users you must provide the database name option (-d).

Nota

La variabile di ambiente OSQLUSER è disponibile per motivi di compatibilità con le versioni precedenti.The OSQLUSER environment variable is available for backward compatibility. La variabile di ambiente SQLCMDUSER ha la priorità rispetto alla variabile di ambiente OSQLUSER.The SQLCMDUSER environment variable takes precedence over the OSQLUSER environment variable. È quindi possibile usare sqlcmd e osql insieme senza conflittiThis means that sqlcmd and osql can be used next to each other without interference. e gli script osql esistenti continueranno a funzionare correttamente.It also means that existing osql scripts will continue to work.

Se non si specifica il - U opzione né la -P opzione è specificata, sqlcmd tenta di connettersi utilizzando la modalità di autenticazione di Microsoft Windows.If neither the -U option nor the -P option is specified, sqlcmd tries to connect by using Microsoft Windows Authentication mode. L'autenticazione si basa sull'account Windows dell'utente che esegue sqlcmd.Authentication is based on the Windows account of the user who is running sqlcmd.

Se si usa l'opzione -U in combinazione con l'opzione -E , descritta più avanti in questo argomento, viene generato un messaggio di errore.If the -U option is used with the -E option (described later in this topic), an error message is generated. Se l'opzione –U è seguita da più di un argomento, viene generato un messaggio di errore e il programma viene chiuso.If the –U option is followed by more than one argument, an error message is generated and the program exits.

-z new_password-z new_password
Modifica la password:Change password:

sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd

-Z new_password-Z new_password
Consente di modificare la password e di chiudere l'utilità:Change password and exit:

sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd

Opzioni di input/outputInput/Output Options
-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
Specifica le tabelle codici di input e output.Specifies the input and output code pages. Il numero specificato per codepage è un valore numerico che indica una tabella codici di Windows installata.The codepage number is a numeric value that specifies an installed Windows code page.

Regole di conversione delle tabelle codiciCode-page conversion rules:

  • Se non viene specificata alcuna tabella codici, sqlcmd userà la tabella codici corrente per i file sia di input che di output, a meno che il file di input non sia un file Unicode per cui non è necessaria alcuna conversione.If no code pages are specified, sqlcmd will use the current code page for both input and output files, unless the input file is a Unicode file, in which case no conversion is required.

  • sqlcmd riconosce automaticamente file di input Unicode sia di tipo Big-Endian che di tipo Little-Endian.sqlcmd automatically recognizes both big-endian and little-endian Unicode input files. Se è stata specificata l'opzione -u , l'output sarà sempre in formato Unicode Little-Endian.If the -u option has been specified, the output will always be little-endian Unicode.

  • Se non viene specificato alcun file di output, la tabella codici di output sarà costituita dalla tabella codici della console.If no output file is specified, the output code page will be the console code page. Ciò consente la visualizzazione corretta dell'output nella console.This enables the output to be displayed correctly on the console.

  • Se sono disponibili più file di input, vengono considerati appartenenti alla stessa tabella codici.Multiple input files are assumed to be of the same code page. È possibile combinare file di input Unicode e non Unicode.Unicode and non-Unicode input files can be mixed.

    Immettere chcp al prompt dei comandi per verificare la tabella codici di Cmd.exe.Enter chcp at the command prompt to verify the code page of Cmd.exe.

    -i input_file[,input_file2...]-i input_file[,input_file2...]
    Identifica il file che include un batch di istruzioni SQL o stored procedure.Identifies the file that contains a batch of SQL statements or stored procedures. È possibile specificare più file che verranno letti ed elaborati nell'ordine in cui sono stati indicati.Multiple files may be specified that will be read and processed in order. Non utilizzare alcuno spazio tra i nomi di file.Do not use any spaces between file names. sqlcmd verificherà prima di tutto che tutti i file specificati esistano.sqlcmd will first check to see whether all the specified files exist. Se uno o più file non esistono, l'utilità sqlcmd viene chiusa.If one or more files do not exist, sqlcmd will exit. Le opzioni -i e -Q/-q si escludono a vicenda.The -i and the -Q/-q options are mutually exclusive.

    Percorsi di esempio:Path examples:

-i C:\<filename>  
-i \\<Server>\<Share$>\<filename>  
-i "C:\Some Folder\<file name>"  

È necessario racchiudere tra virgolette i percorsi dei file contenenti spazi.File paths that contain spaces must be enclosed in quotation marks.

Questa opzione può essere usata più di una volta: -iinput_file -II input_file.This option may be used more than once: -iinput_file -II input_file.

-o output_file-o output_file
Identifica il file che riceve l'output di sqlcmd.Identifies the file that receives output from sqlcmd.

Se si specifica -u , output_file viene archiviato in formato Unicode.If -u is specified, the output_file is stored in Unicode format. Se il nome file non è valido, viene generato un messaggio di errore e l'utilità sqlcmd viene chiusa.If the file name is not valid, an error message is generated, and sqlcmd exits. sqlcmd non supporta la scrittura simultanea di più processi sqlcmd nello stesso file.sqlcmd does not support concurrent writing of multiple sqlcmd processes to the same file. L'output del file risulterà danneggiato o non corretto.The file output will be corrupted or incorrect. Per altre informazioni sui formati di file, vedere l'opzione -f .See the -f switch for more information about file formats. Se il file non esiste, verrà creato.This file will be created if it does not exist. Un file con lo stesso nome di una sessione di sqlcmd precedente verrà sovrascritto.A file of the same name from a prior sqlcmd session will be overwritten. Il file specificato in questa posizione non corrisponde al file stdout .The file specified here is not the stdout file. Se viene specificato un file stdout , questo file non verrà utilizzato.If a stdout file is specified this file will not be used.

Percorsi di esempio:Path examples:

-o C:< filename>  
-o \\<Server>\<Share$>\<filename>  
-o "C:\Some Folder\<file name>"  

È necessario racchiudere tra virgolette i percorsi dei file contenenti spazi.File paths that contain spaces must be enclosed in quotation marks.

-r[0 | 1]-r[0 | 1]
Reindirizza l'output dei messaggi di errore sullo schermo (stderr).Redirects the error message output to the screen (stderr). Se il parametro viene omesso o si specifica 0, vengono reindirizzati solo i messaggi di errore con livello di gravità 11 o superiore.If you do not specify a parameter or if you specify 0, only error messages that have a severity level of 11 or higher are redirected. Se si specifica 1, viene reindirizzato l'output di tutti i messaggi di errore che includono PRINT.If you specify 1, all error message output including PRINT is redirected. Non ha effetto se si utilizza -o.Has no effect if you use -o. Per impostazione predefinita, i messaggi sono inviati a stdout.By default, messages are sent to stdout.

-R-R
Fa sì che sqlcmd localizzare numerico, valuta, data e ora colonne recuperati da SQL Server in base alle impostazioni locali del client.Causes sqlcmd to localize numeric, currency, date, and time columns retrieved from SQL Server based on the client’s locale. Per impostazione predefinita, tali colonne vengono visualizzate utilizzando le impostazioni internazionali del server.By default, these columns are displayed using the server’s regional settings.

-u-u
Specifica l'archiviazione di output_file in formato Unicode, indipendentemente dal formato di input_file.Specifies that output_file is stored in Unicode format, regardless of the format of input_file.

Opzioni relative all'esecuzione di queryQuery Execution Options
-e-e
Scrive gli script di input nel dispositivo di output standard (stdout).Writes input scripts to the standard output device (stdout).

-I-I
Imposta l'opzione di connessione SET QUOTED_IDENTIFIER su ON.Sets the SET QUOTED_IDENTIFIER connection option to ON. Per impostazione predefinita, l'opzione è impostata su OFF.By default, it is set to OFF. Per altre informazioni, vedere SET QUOTED_IDENTIFIER (Transact-SQL).For more information, see SET QUOTED_IDENTIFIER (Transact-SQL).

-q" cmdline query "-q" cmdline query "
Esegue una query all'avvio di sqlcmd senza chiudere sqlcmd al termine dell'esecuzione della query.Executes a query when sqlcmd starts, but does not exit sqlcmd when the query has finished running. È possibile eseguire più query delimitandole con punti e virgola.Multiple-semicolon-delimited queries can be executed. Racchiudere la query tra virgolette come illustrato nell'esempio seguente.Use quotation marks around the query, as shown in the following example.

Al prompt dei comandi digitare:At the command prompt, type:

sqlcmd -d AdventureWorks2012 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

sqlcmd -d AdventureWorks2012 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"

Importante

Non utilizzare il carattere di terminazione GO nella query.Do not use the GO terminator in the query.

Se insieme a questa opzione si specifica -b , l'utilità sqlcmd viene chiusa in caso di errore.If -b is specified together with this option, sqlcmd exits on error. L'opzione-b è descritta più avanti in questo argomento.-b is described later in this topic.

-Q" cmdline query "-Q" cmdline query "
Esegue una query all'avvio di sqlcmd e quindi chiude immediatamente sqlcmd.Executes a query when sqlcmd starts and then immediately exits sqlcmd. È possibile eseguire più query delimitandole con punti e virgola.Multiple-semicolon-delimited queries can be executed.

Racchiudere la query tra virgolette come illustrato nell'esempio seguente.Use quotation marks around the query, as shown in the following example.

Al prompt dei comandi digitare:At the command prompt, type:

sqlcmd -d AdventureWorks2012 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

sqlcmd -d AdventureWorks2012 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"

Importante

Non utilizzare il carattere di terminazione GO nella query.Do not use the GO terminator in the query.

Se insieme a questa opzione si specifica -b , l'utilità sqlcmd viene chiusa in caso di errore.If -b is specified together with this option, sqlcmd exits on error. L'opzione-b è descritta più avanti in questo argomento.-b is described later in this topic.

-t query_timeout-t query_timeout
Specifica il numero di secondi prima del timeout del comando o dell'istruzione SQL.Specifies the number of seconds before a command (or SQL statement) times out. Questa opzione imposta la variabile di scripting SQLCMDSTATTIMEOUT di sqlcmd .This option sets the sqlcmd scripting variable SQLCMDSTATTIMEOUT. Se per time_out non viene specificato un valore, non si verifica il timeout del comando.If a time_out value is not specified, the command does not time out. Il valore di querytime_out deve essere un numero compreso tra 1 e 65534.The querytime_out must be a number between 1 and 65534. Se il valore specificato non è numerico o non è compreso in tale intervallo, sqlcmd genera un messaggio di errore.If the value supplied is not numeric or does not fall into that range, sqlcmd generates an error message.

Nota

Il valore di timeout effettivo può variare di diversi secondi rispetto al valore specificato per time_out .The actual time out value may vary from the specified time_out value by several seconds.

-vvar = value[ var = value...]-vvar = value[ var = value...]
Crea una variabile di scripting di sqlcmdche può essere usata in uno script sqlcmd .Creates a sqlcmdscripting variable that can be used in a sqlcmd script. Se il valore contiene spazi, racchiuderlo tra virgolette.Enclose the value in quotation marks if the value contains spaces. È possibile specificare più valori var="values" .You can specify multiple var="values" values. Se in uno dei valori specificati è incluso un errore, l'utilità sqlcmd genera un messaggio di errore e viene chiusa.If there are errors in any of the values specified, sqlcmd generates an error message and then exits.

sqlcmd -v MyVar1=something MyVar2="some thing"

sqlcmd -v MyVar1=something -v MyVar2="some thing"

-x-x
Indica a sqlcmd di ignorare le variabili di scripting.Causes sqlcmd to ignore scripting variables. Ciò risulta utile quando uno script contiene numerose istruzioni INSERT che possono includere stringhe con lo stesso formato di variabili normali, ad esempio $(variable_name).This is useful when a script contains many INSERT statements that may contain strings that have the same format as regular variables, such as $(variable_name).

Opzioni di formattazioneFormatting Options
-h headers-h headers
Specifica il numero di righe da stampare tra le intestazioni delle colonne.Specifies the number of rows to print between the column headings. Per impostazione predefinita, le intestazioni vengono stampate una volta per ogni set di risultati delle query.The default is to print headings one time for each set of query results. Questa opzione imposta la variabile di scripting SQLCMDHEADERS di sqlcmd .This option sets the sqlcmd scripting variable SQLCMDHEADERS. Usare -1 per non stampare alcuna intestazione.Use -1 to specify that headers must not be printed. Eventuali valori non validi comportano la generazione di un messaggio di errore e la chiusura di sqlcmd .Any value that is not valid causes sqlcmd to generate an error message and then exit.

-k [1 | 2]-k [1 | 2]
Rimuove tutti i caratteri di controllo, ad esempio i caratteri di tabulazione e nuova riga, dall'output.Removes all control characters, such as tabs and new line characters from the output. In questo modo viene conservata la formattazione di colonna quando vengono restituiti i dati.This preserves column formatting when data is returned. Se si specifica 1, i caratteri di controllo vengono sostituiti da un singolo spazio.If 1 is specified, the control characters are replaced by a single space. Se si specifica 2, i caratteri di controllo consecutivi vengono sostituiti da uno spazio singolo.If 2 is specified, consecutive control characters are replaced by a single space. -k corrisponde a -k1.-k is the same as -k1.

-s col_separator-s col_separator
Specifica il carattere separatore di colonna.Specifies the column-separator character. L'impostazione predefinita è uno spazio vuoto.The default is a blank space. Questa opzione imposta la variabile di scripting SQLCMDCOLSEP di sqlcmd .This option sets the sqlcmd scripting variable SQLCMDCOLSEP. Per utilizzare caratteri con un significato speciale per il sistema operativo, ad esempio il carattere e commerciale (&) o il punto e virgola (;), racchiudere il carattere specifico tra virgolette (").To use characters that have special meaning to the operating system such as the ampersand (&), or semicolon (;), enclose the character in quotation marks ("). Il separatore di colonna può essere un carattere a 8 bit qualsiasi.The column separator can be any 8-bit character.

-w column_width-w column_width
Specifica la larghezza della schermata per l'output.Specifies the screen width for output. Questa opzione imposta la variabile di scripting SQLCMDCOLWIDTH di sqlcmd .This option sets the sqlcmd scripting variable SQLCMDCOLWIDTH. La larghezza della colonna deve essere un numero maggiore di 8 e minore di 65.536.The column width must be a number greater than 8 and less than 65536. Se la larghezza della colonna specificata non rientra in tale intervallo, sqlcmd genera un messaggio di errore.If the specified column width does not fall into that range, sqlcmd generates and error message. La lunghezza predefinita è di 80 caratteri.The default width is 80 characters. Se una riga di output supera la larghezza di colonna specificata, la riga viene riportata nella riga successiva.When an output line exceeds the specified column width, it wraps on to the next line.

-W-W
Questa opzione rimuove gli spazi finali da una colonna.This option removes trailing spaces from a column. Usare questa opzione in combinazione con l'opzione -s quando si preparano i dati per l'esportazione in un'altra applicazione.Use this option together with the -s option when preparing data that is to be exported to another application. Non è possibile usare questa opzione con -y o -Y .Cannot be used with the -y or -Y options.

-y variable_length_type_display_width-y variable_length_type_display_width
Imposta la variabile di scripting di sqlcmd SQLCMDMAXVARTYPEWIDTH.Sets the sqlcmd scripting variable SQLCMDMAXVARTYPEWIDTH. L'impostazione predefinita è 256.The default is 256. Limita il numero di caratteri restituiti per i tipi di dati a lunghezza variabile di grandi dimensioni:It limits the number of characters that are returned for the large variable length data types:

  • varchar(max)varchar(max)

  • nvarchar(max)nvarchar(max)

  • varbinary(max)varbinary(max)

  • xmlxml

  • UDT (tipi di dati definiti dall'utente)UDT (user-defined data types)

  • texttext

  • ntextntext

  • imageimage

Nota

I tipi definiti dall'utente (UDT) possono essere a lunghezza fissa in base all'implementazione.UDTs can be of fixed length depending on the implementation. Se la lunghezza di un tipo definito dall'utente (UDT) a lunghezza fissa è inferiore a display_width, il valore del tipo definito dall'utente (UDT) restituito non viene alterato.If this length of a fixed length UDT is shorter that display_width, the value of the UDT returned is not affected. Se invece la lunghezza è superiore a display_width, l'output viene troncato.However, if the length is longer than display_width, the output is truncated.

Importante

Usare l'opzione -y 0 con estrema cautela, poiché potrebbe causare gravi problemi a livello di prestazioni del server e della rete, a seconda delle dimensioni dei dati restituiti.Use the -y 0 option with extreme caution because it may cause serious performance issues on both the server and the network, depending on the size of data returned.

-Y fixed_length_type_display_width-Y fixed_length_type_display_width
Imposta la variabile di scripting di sqlcmd SQLCMDMAXFIXEDTYPEWIDTH.Sets the sqlcmd scripting variable SQLCMDMAXFIXEDTYPEWIDTH. Il valore predefinito è 0 (illimitato).The default is 0 (unlimited). Limita il numero di caratteri restituiti per i tipi di dati seguenti:Limits the number of characters that are returned for the following data types:

  • char( n ), where 1<=n<=8000char( n ), where 1<=n<=8000

  • nchar(n n ), where 1<=n<=4000nchar(n n ), where 1<=n<=4000

  • varchar(n n ), where 1<=n<=8000varchar(n n ), where 1<=n<=8000

  • nvarchar(n n ), where 1<=n<=4000nvarchar(n n ), where 1<=n<=4000

  • varbinary(n n ), where 1<=n<=4000varbinary(n n ), where 1<=n<=4000

  • variantvariant

    Opzioni relative alla segnalazione degli erroriError Reporting Options
    -b-b
    Specifica che in caso di errore l'utilità sqlcmd viene chiusa restituendo un valore DOS ERRORLEVEL.Specifies that sqlcmd exits and returns a DOS ERRORLEVEL value when an error occurs. Il valore restituito alla variabile DOS ERRORLEVEL è 1 quando il messaggio di errore di SQL Server con un livello di gravità maggiore di 10; in caso contrario, il valore restituito è 0.The value that is returned to the DOS ERRORLEVEL variable is 1 when the SQL Server error message has a severity level greater than 10; otherwise, the value returned is 0. Se è stata impostata l'opzione -V in combinazione con -b, sqlcmd non segnalerà un errore se il livello di gravità è minore dei valori impostati tramite -V.If the -V option has been set in addition to -b, sqlcmd will not report an error if the severity level is lower than the values set using -V. I file batch del prompt dei comandi consentono di verificare il valore di ERRORLEVEL nonché di gestire correttamente l'errore.Command prompt batch files can test the value of ERRORLEVEL and handle the error appropriately. sqlcmd non segnala errori per il livello di gravità 10 (messaggi informativi).sqlcmd does not report errors for severity level 10 (informational messages).

    Se lo script sqlcmd contiene un commento errato o un errore di sintassi o se una variabile di scripting risulta mancante, il valore di ERRORLEVEL restituito è 1.If the sqlcmd script contains an incorrect comment, syntax error, or is missing a scripting variable, ERRORLEVEL returned is 1.

    -m error_level-m error_level
    Controlla i messaggi di errore inviati a stdout.Controls which error messages are sent to stdout. Vengono inviati i messaggi a cui è associato un livello di gravità maggiore o uguale a questo livello.Messages that have a severity level greater than or equal to this level are sent. Quando questo valore è impostato su -1, vengono inviati tutti i messaggi, inclusi quelli informativi.When this value is set to -1, all messages including informational messages, are sent. Non sono consentiti spazi tra -m e -1.Spaces are not allowed between the -m and -1. Ad esempio, -m-1 è un formato valido, mentre -m-1 non lo è.For example, -m-1 is valid, and -m-1 is not.

    Questa opzione imposta inoltre la variabile di scripting SQLCMDERRORLEVEL di sqlcmd .This option also sets the sqlcmd scripting variable SQLCMDERRORLEVEL. Per impostazione predefinita, il valore di questa variabile è 0.This variable has a default of 0.

    -V error_severity_level-V error_severity_level
    Controlla il livello di gravità utilizzato per impostare la variabile ERRORLEVEL.Controls the severity level that is used to set the ERRORLEVEL variable. Tramite i messaggi di errore a cui sono associati livelli di gravità maggiori o uguali a questo valore viene impostato ERRORLEVEL.Error messages that have severity levels greater than or equal to this value set ERRORLEVEL. I valori minori di 0 vengono indicati come 0.Values that are less than 0 are reported as 0. È possibile utilizzare file batch e CMD per verificare il valore della variabile ERRORLEVEL.Batch and CMD files can be used to test the value of the ERRORLEVEL variable.

    Opzioni varieMiscellaneous Options
    -a packet_size-a packet_size
    Richiede un pacchetto di dimensione diversa.Requests a packet of a different size. Questa opzione imposta la variabile di scripting SQLCMDPACKETSIZE di sqlcmd .This option sets the sqlcmd scripting variable SQLCMDPACKETSIZE. Il valore dipacket_size deve essere compreso tra 512 e 32767.packet_size must be a value between 512 and 32767. Il valore predefinito è 4096.The default = 4096. Dimensioni più estese del pacchetto possono migliorare le prestazioni per l'esecuzione di script che dispongono di molte istruzioni SQL tra comandi GO.A larger packet size can enhance performance for execution of scripts that have lots of SQL statements between GO commands. È possibile richiedere dimensioni di pacchetto superiori.You can request a larger packet size. Se tale richiesta viene negata, tuttavia, sqlcmd usa le dimensioni di pacchetto predefinite del server.However, if the request is denied, sqlcmd uses the server default for packet size.

    -c batch_terminator-c batch_terminator
    Specifica il carattere di terminazione di batch.Specifies the batch terminator. Per impostazione predefinita, i comandi sono terminati e inviati a SQL Server digitando la parola "GO" su una riga da sola.By default, commands are terminated and sent to SQL Server by typing the word "GO" on a line by itself. Quando si reimposta il terminatore di batch, non utilizzare parole chiave riservate di Transact-SQL o caratteri che hanno un significato speciale per il sistema operativo, anche se sono preceduti da una barra rovesciata.When you reset the batch terminator, do not use Transact-SQL reserved keywords or characters that have special meaning to the operating system, even if they are preceded by a backslash.

    -L[c]-L[c]
    Elenca i computer server configurati localmente e i nomi dei computer server che trasmettono in rete.Lists the locally configured server computers, and the names of the server computers that are broadcasting on the network. Questo parametro non può essere utilizzato in combinazione con altri parametri.This parameter cannot be used in combination with other parameters. Il numero massimo di computer del server che è possibile specificare è 3000.The maximum number of server computers that can be listed is 3000. Se l'elenco server è troncato a causa della dimensione del buffer, verrà visualizzato un messaggio di avviso.If the server list is truncated because of the size of the buffer a warning message is displayed.

Nota

A causa della natura delle trasmissioni in rete, è possibile che sqlcmd non riceva una risposta tempestiva da tutti i serverBecause of the nature of broadcasting on networks, sqlcmd may not receive a timely response from all servers. e pertanto che l'elenco di server restituito sia diverso per ogni chiamata di questa opzione.Therefore, the list of servers returned may vary for each invocation of this option.

Se si specifica il parametro facoltativo c , l'output viene visualizzato senza la riga di intestazione Servers e ogni riga del server viene elencata senza spazi iniziali.If the optional parameter c is specified, the output appears without the Servers: header line and each server line is listed without leading spaces. Questo tipo di output viene definito pulito.This is referred to as clean output. L'output pulito consente di migliorare le prestazioni di elaborazione dei linguaggi di scripting.Clean output improves the processing performance of scripting languages.

-p[1]-p[1]
Stampa le statistiche delle prestazioni per ogni set di risultati.Prints performance statistics for every result set. Di seguito è riportato un esempio del formato delle statistiche delle prestazioni:The following is an example of the format for performance statistics:

Network packet size (bytes): n

x xact[s]:

Clock Time (ms.): total t1 avg t2 (t3 xacts per sec.)

Dove:Where:

x= Numero di transazioni che vengono elaborati da SQL Server.x = Number of transactions that are processed by SQL Server .

t1 = tempo totale per tutte le transazioni.t1 = Total time for all transactions.

t2 = tempo medio per una singola transazione.t2 = Average time for a single transaction.

t3 = numero medio di transazioni al secondo.t3 = Average number of transactions per second.

Tutti i valori relativi al tempo sono espressi in millisecondi.All times are in milliseconds.

Se si specifica il parametro facoltativo 1 , l'output delle statistiche è in formato separato da due punti. Questo formato può essere facilmente importato in un foglio di calcolo o elaborato da uno script.If the optional parameter 1 is specified, the output format of the statistics is in colon-separated format that can be imported easily into a spreadsheet or processed by a script.

Se il parametro facoltativo è un valore qualsiasi diverso da 1, viene generato un messaggio di errore e l'utilità sqlcmd viene chiusa.If the optional parameter is any value other than 1, an error is generated and sqlcmd exits.

-X[1]-X[1]
Disabilita i comandi che potrebbero pregiudicare la sicurezza del sistema quando si esegue sqlcmd da un file batch.Disables commands that might compromise system security when sqlcmd is executed from a batch file. I comandi disabilitati vengono comunque riconosciuti. sqlcmd genera un messaggio di avviso e continua l'esecuzione.The disabled commands are still recognized; sqlcmd issues a warning message and continues. Se si specifica il parametro facoltativo 1 , l'utilità sqlcmd genera un messaggio di errore e viene chiusa.If the optional parameter 1 is specified, sqlcmd generates an error message and then exits. Se si specifica l'opzione -X , vengono disabilitati i comandi seguenti:The following commands are disabled when the -X option is used:

  • EDED

  • !!!! comandocommand

    Se si specifica l'opzione -X , le variabili di ambiente non vengono passate a sqlcmd.If the -X option is specified, it prevents environment variables from being passed on to sqlcmd. Questa opzione impedisce inoltre che venga eseguito lo script di avvio specificato utilizzando la variabile di scripting SQLCMDINI.It also prevents the startup script specified by using the SQLCMDINI scripting variable from being executed. Per altre informazioni sulle variabili di scripting di sqlcmd , vedere Utilizzo di sqlcmd con variabili di scripting.For more information about sqlcmd scripting variables, see Use sqlcmd with Scripting Variables.

    -?-?
    Visualizza la versione di sqlcmd e il riepilogo della sintassi delle opzioni di sqlcmd .Displays the version of sqlcmd and a syntax summary of sqlcmd options.

OsservazioniRemarks

Le opzioni non devono essere necessariamente utilizzate nell'ordine illustrato nella sezione della sintassi.Options do not have to be used in the order shown in the syntax section.

Se vengono restituiti più risultati, sqlcmd stampa una riga vuota tra ogni set di risultati in un batch.When multiple results are returned, sqlcmd prints a blank line between each result set in a batch. Inoltre, il messaggio <x> rows affected non viene visualizzato se non si applica all'istruzione eseguita.In addition, the <x> rows affected message does not appear when it does not apply to the statement executed.

Per usare sqlcmd in modo interattivo, digitare sqlcmd al prompt dei comandi con una o più delle opzioni precedentemente descritte in questo argomento.To use sqlcmd interactively, type sqlcmd at the command prompt with any one or more of the options described earlier in this topic. Per altre informazioni, vedere Utilizzo dell'utilità sqlcmdFor more information, see Use the sqlcmd Utility

Nota

Le opzioni -L, -Q, -Z e -i causano la chiusura di sqlcmd dopo l'esecuzione.The options -L, -Q, -Z or -i cause sqlcmd to exit after execution.

La lunghezza totale della riga di comando di sqlcmd nell'ambiente di comando (Cmd.exe), inclusi tutti gli argomenti e le variabili espanse, corrisponde alla lunghezza determinata dal sistema operativo per Cmd.exe.The total length of the sqlcmd command line in the command environment (Cmd.exe), including all arguments and expanded variables, is that which is determined by the operating system for Cmd.exe.

Precedenza delle variabili (in ordine crescente)Variable Precedence (Low to High)

  1. Variabili di ambiente a livello di sistema.System-level environmental variables.

  2. Variabili di ambiente a livello di utente.User-level environmental variables

  3. Shell dei comandi (SET X=Y) impostata al prompt dei comandi prima dell'esecuzione di sqlcmd.Command shell (SET X=Y) set at command prompt before running sqlcmd.

  4. sqlcmd-v X=Ysqlcmd-v X=Y

  5. :Setvar X Y:Setvar X Y

Nota

Per visualizzare le variabili di ambiente, nel Pannello di controlloaprire Sistemaquindi fare clic sulla scheda Avanzate .To view the environmental variables, in Control Panel, open System, and then click the Advanced tab.

Variabili di scripting di sqlcmdsqlcmd Scripting Variables

VariabileVariable Opzione correlataRelated switch L/SR/W Valore predefinitoDefault
SQLCMDUSERSQLCMDUSER -U-U LR """"
SQLCMDPASSWORDSQLCMDPASSWORD -P-P -- """"
SQLCMDSERVERSQLCMDSERVER -S-S LR "DefaultLocalInstance""DefaultLocalInstance"
SQLCMDWORKSTATIONSQLCMDWORKSTATION -H-H LR "ComputerName""ComputerName"
SQLCMDDBNAMESQLCMDDBNAME -d-d LR """"
SQLCMDLOGINTIMEOUTSQLCMDLOGINTIMEOUT -l-l L/SR/W "8" (secondi)"8" (seconds)
SQLCMDSTATTIMEOUTSQLCMDSTATTIMEOUT -t-t L/SR/W "0" = attesa illimitata"0" = wait indefinitely
SQLCMDHEADERSSQLCMDHEADERS -H-h L/SR/W "0""0"
SQLCMDCOLSEPSQLCMDCOLSEP -S-s L/SR/W " "." "
SQLCMDCOLWIDTHSQLCMDCOLWIDTH -w-w L/SR/W "0""0"
SQLCMDPACKETSIZESQLCMDPACKETSIZE -A-a LR "4096""4096"
SQLCMDERRORLEVELSQLCMDERRORLEVEL -M-m L/SR/W 00
SQLCMDMAXVARTYPEWIDTHSQLCMDMAXVARTYPEWIDTH -y-y L/SR/W "256""256"
SQLCMDMAXFIXEDTYPEWIDTHSQLCMDMAXFIXEDTYPEWIDTH -y-Y L/SR/W "0" = numero illimitato"0" = unlimited
SQLCMDEDITORSQLCMDEDITOR L/SR/W "edit.com""edit.com"
SQLCMDINISQLCMDINI LR """"
SQLCMDUSEAADSQLCMDUSEAAD -G-G L/SR/W """"

Le variabili SQLCMDUSER, SQLCMDPASSWORD e SQLCMDSERVER vengono impostate quando viene usato :Connect .SQLCMDUSER, SQLCMDPASSWORD and SQLCMDSERVER are set when :Connect is used.

La lettera L indica che il valore può essere impostato una sola volta durante l'inizializzazione del programma.R indicates the value can only be set one time during program initialization.

L/S indica che è possibile modificare il valore tramite il comando setvar e che il nuovo valore influirà sui comandi successivi.R/W indicates that the value can be modified by using the setvar command and subsequent commands will be influenced by the new value.

Comandi sqlcmdsqlcmd Commands

Oltre alle istruzioni Transact-SQL all'interno di sqlcmd, sono disponibili anche i comandi seguenti:In addition to Transact-SQL statements within sqlcmd, the following commands are also available:

GO [count]GO [count] :List:List
[:] RESET[:] RESET :Error:Error
[:] ED[:] ED :Out:Out
[:] !![:] !! :Perftrace:Perftrace
[:] QUIT[:] QUIT :Connect:Connect
[:] EXIT[:] EXIT :On Error:On Error
:r:r :Help:Help
:ServerList:ServerList :XML [ON | OFF]:XML [ON | OFF]
:Setvar:Setvar :Listvar:Listvar

Quando si usano comandi sqlcmd , tenere presente quanto segue:Be aware of the following when you use sqlcmd commands:

  • Tutti i comandi sqlcmd , ad eccezione di GO, devono essere preceduti da due punti (:).All sqlcmd commands, except GO, must be prefixed by a colon (:).

    Importante

    Per garantire la compatibilità con le versioni precedenti per gli script osql esistenti, alcuni comandi verranno riconosciuti anche senza i due punti.To maintain backward compatibility with existing osql scripts, some of the commands will be recognized without the colon. Questa caratteristica è indicata da [:].This is indicated by the [:].

  • I comandisqlcmd vengono riconosciuti solo se si trovano all'inizio di una riga.sqlcmd commands are recognized only if they appear at the start of a line.

  • Tutti i comandi sqlcmd non fanno distinzione tra maiuscole e minuscole.All sqlcmd commands are case insensitive.

  • Ogni comando deve trovarsi in una riga distinta.Each command must be on a separate line. Un comando non può essere seguito da un'istruzione Transact-SQL o un altro comando.A command cannot be followed by a Transact-SQL statement or another command.

  • I comandi vengono eseguiti immediatamenteCommands are executed immediately. E non vengono inseriti nel buffer di esecuzione sono istruzioni Transact-SQL.They are not put in the execution buffer as Transact-SQL statements are.

    Comandi di modificaEditing Commands
    [:] ED[:] ED
    Avvia l'editor di testo.Starts the text editor. Questo editor può essere utilizzato per modificare il batch Transact-SQL corrente o l'ultima esecuzione batch.This editor can be used to edit the current Transact-SQL batch, or the last executed batch. Per modificare l'ultimo batch eseguito, il comando ED deve essere specificato subito dopo il completamento dell'esecuzione dell'ultimo batch.To edit the last executed batch, the ED command must be typed immediately after the last batch has completed execution.

    L'editor di testo viene definito dalla variabile di ambiente SQLCMDEDITOR.The text editor is defined by the SQLCMDEDITOR environment variable. L'editor predefinito è "Edit".The default editor is 'Edit'. Per modificare l'editor, impostare la variabile di ambiente SQLCMDEDITOR.To change the editor, set the SQLCMDEDITOR environment variable. Ad esempio, per impostare l'editor a Microsoft Notepad, al prompt dei comandi, digitare:For example, to set the editor to Microsoft Notepad, at the command prompt, type:

    SET SQLCMDEDITOR=notepad

    [:] RESET[:] RESET
    Cancella la cache dell'istruzione.Clears the statement cache.

    :List:List
    Stampa il contenuto della cache dell'istruzione.Prints the content of the statement cache.

    VariabiliVariables
    :Setvar <var> [ "value" ]:Setvar <var> [ "value" ]
    Definisce le variabili di scripting di sqlcmd .Defines sqlcmd scripting variables. Il formato delle variabili di scripting è il seguente: $(VARNAME).Scripting variables have the following format: $(VARNAME).

    I nomi delle variabili non fanno distinzione tra maiuscole e minuscole.Variable names are case insensitive.

    È possibile impostare le variabili di scripting nei modi seguenti:Scripting variables can be set in the following ways:

  • In modo implicito utilizzando un'opzione della riga di comando.Implicitly using a command-line option. Ad esempio, l'opzione -l imposta la variabile SQLCMDLOGINTIMEOUT di sqlcmd .For example, the -l option sets the SQLCMDLOGINTIMEOUT sqlcmd variable.

  • In modo esplicito utilizzando il comando :Setvar .Explicitly by using the :Setvar command.

  • Mediante la definizione di una variabile di ambiente prima dell'esecuzione di sqlcmd.By defining an environment variable before you run sqlcmd.

Nota

L'opzione -X impedisce la trasmissione delle variabili di ambiente a sqlcmd.The -X option prevents environment variables from being passed on to sqlcmd.

Se il nome di una variabile definita mediante il comando :Setvar e di una variabile di ambiente è lo stesso, la variabile definita con :Setvar ha la precedenza.If a variable defined by using :Setvar and an environment variable have the same name, the variable defined by using :Setvar takes precedence.

I nomi delle variabili non devono contenere spazi vuoti.Variable names must not contain blank space characters.

I nomi delle variabili non possono disporre dello stesso formato delle espressioni con variabili, ad esempio $(var).Variable names cannot have the same form as a variable expression, such as $(var).

Se il valore stringa della variabile di scripting contiene spazi vuoti, racchiudere il valore tra virgolette.If the string value of the scripting variable contains blank spaces, enclose the value in quotation marks. Se per una variabile di scripting non viene specificato alcun valore, la variabile di scripting viene eliminata.If a value for a scripting variable is not specified, the scripting variable is dropped.

:Listvar:Listvar
Visualizza l'elenco delle variabili di scripting impostate.Displays a list of the scripting variables that are currently set.

Nota

Verranno visualizzate solo le variabili di scripting impostate da sqlcmde quelle impostate usando il comando :Setvar .Only scripting variables that are set by sqlcmd, and those that are set using the :Setvar command will be displayed.

Comandi di outputOutput Commands
:Error :Error
< filename >| STDERR|STDOUT< filename >| STDERR|STDOUT
Reindirizza tutti gli output degli errori nel file specificato da filename, in stderr oppure in stdout.Redirect all error output to the file specified by file name, to stderr or to stdout. Il comando Error può essere utilizzato più volte in uno script.The Error command can appear multiple times in a script. Per impostazione predefinita, l'output degli errori viene inviato in stderr.By default, error output is sent to stderr.

file namefile name
Crea e apre un file che riceverà l'output.Creates and opens a file that will receive the output. Se il file esiste già, verrà troncato a zero byte.If the file already exists, it will be truncated to zero bytes. Se il file non è disponibile a causa delle autorizzazioni o per altri motivi, l'output non verrà trasferito e verrà inviato all'ultima destinazione specificata oppure alla destinazione predefinita.If the file is not available because of permissions or other reasons, the output will not be switched and will be sent to the last specified or default destination.

STDERRSTDERR
Trasferisce l'output degli errori al flusso stderr .Switches error output to the stderr stream. Se l'output è stato reindirizzato, la destinazione alla quale il flusso è stato reindirizzato riceverà l'output degli errori.If this has been redirected, the target to which the stream has been redirected will receive the error output.

STDOUTSTDOUT
Trasferisce l'output degli errori al flusso stdout .Switches error output to the stdout stream. Se l'output è stato reindirizzato, la destinazione alla quale il flusso è stato reindirizzato riceverà l'output degli errori.If this has been redirected, the target to which the stream has been redirected will receive the error output.

:Out < filename >| STDERR| STDOUT:Out < filename >| STDERR| STDOUT
Crea e reindirizza tutti i risultati delle query nel file specificato da filename, in stderr oppure in stdout.Creates and redirects all query results to the file specified by file name, to stderr or to stdout. Per impostazione predefinita, l'output viene inviato in stdout.By default, output is sent to stdout. Se il file esiste già, verrà troncato a zero byte.If the file already exists, it will be truncated to zero bytes. Il comando Out può essere utilizzato più volte in uno script.The Out command can appear multiple times in a script.

:Perftrace < filename >| STDERR| STDOUT:Perftrace < filename >| STDERR| STDOUT
Crea e reindirizza tutte le informazioni di traccia delle prestazioni nel file specificato da filename, in stderr oppure in stdout.Creates and redirects all performance trace information to the file specified by file name, to stderr or to stdout. Per impostazione predefinita, l'output della traccia delle prestazioni viene inviato in stdout.By default performance trace output is sent to stdout. Se il file esiste già, verrà troncato a zero byte.If the file already exists, it will be truncated to zero bytes. Il comando Perftrace può essere utilizzato più volte in uno script.The Perftrace command can appear multiple times in a script.

Comandi di controllo dell'esecuzioneExecution Control Commands
:On Error[ exit | ignore]:On Error[ exit | ignore]
Imposta l'azione da eseguire quando si verifica un errore durante l'esecuzione dello script o del batch.Sets the action to be performed when an error occurs during script or batch execution.

Se si specifica l'opzione exit , l'utilità sqlcmd viene chiusa con il valore di errore appropriato.When the exit option is used, sqlcmd exits with the appropriate error value.

Se viene usata l'opzione ignore , sqlcmd ignora l'errore e continua l'esecuzione del batch o dello script.When the ignore option is used, sqlcmd ignores the error and continues executing the batch or script. Per impostazione predefinita, verrà stampato un messaggio di errore.By default, an error message will be printed.

[:] QUIT[:] QUIT
Provoca la chiusura di sqlcmd .Causes sqlcmd to exit.

[:] EXIT[ (statement) ][:] EXIT[ (statement) ]
Consente di usare il risultato di un'istruzione SELECT come valore restituito da sqlcmd.Lets you use the result of a SELECT statement as the return value from sqlcmd. Se numerica, la prima colonna dell'ultima riga di risultati viene convertita in un valore integer di 4 byte (long).If numeric, the first column of the last result row is converted to a 4-byte integer (long). MS-DOS passa il byte di ordine inferiore al processo padre o al livello di errore del sistema operativo.MS-DOS passes the low byte to the parent process or operating system error level. Windows 200x passa l'intero valore intero di 4 byte.Windows 200x passes the whole 4-byte integer. La sintassi è:The syntax is:

:EXIT(query)

Esempio:For example:

:EXIT(SELECT @@ROWCOUNT)

È inoltre possibile includere il parametro EXIT in un file batch.You can also include the EXIT parameter as part of a batch file. Al prompt dei comandi, ad esempio, digitare:For example, at the command prompt, type:

sqlcmd -Q "EXIT(SELECT COUNT(*) FROM '%1')"

L'utilità sqlcmd invia i dati tra parentesi () al server.The sqlcmd utility sends everything between the parentheses () to the server. Se una stored procedure di sistema seleziona un set e restituisce un valore, viene restituita solo la selezione.If a system stored procedure selects a set and returns a value, only the selection is returned. Se non si specifica alcun elemento tra le parentesi dell'istruzione EXIT() , viene eseguito tutto ciò che la precede nel batch e l'operazione viene quindi terminata senza restituire alcun valore.The EXIT() statement with nothing between the parentheses executes everything before it in the batch and then exits without a return value.

Se si specifica una query non corretta, l'utilità sqlcmd viene chiusa senza restituire alcun valore.When an incorrect query is specified, sqlcmd will exit without a return value.

Di seguito è riportato l'elenco dei formati supportati dall'istruzione EXIT.Here is a list of EXIT formats:

  • :EXIT:EXIT

    L'utilità non esegue il batch, quindi viene chiusa immediatamente e non restituisce alcun valore.Does not execute the batch, and then quits immediately and returns no value.

  • :EXIT( ):EXIT( )

    L'utilità esegue il batch, viene chiusa e non restituisce alcun valore.Executes the batch, and then quits and returns no value.

  • :EXIT(query):EXIT(query)

    L'utilità esegue il batch in cui è inclusa la query e quindi viene chiusa dopo aver restituito i risultati della query.Executes the batch that includes the query, and then quits after it returns the results of the query.

    Se in uno script sqlcmd si usa RAISERROR e si verifica una condizione con stato 127, l'utilità sqlcmd viene chiusa e restituisce al client l'ID di messaggio.If RAISERROR is used within a sqlcmd script and a state of 127 is raised, sqlcmd will quit and return the message ID back to the client. Esempio:For example:

    RAISERROR(50001, 10, 127)

    Questo errore comporta la chiusura dello script sqlcmd e la restituzione dell'ID di messaggio 50001 al client.This error will cause the sqlcmd script to end and return the message ID 50001 to the client.

    I valori restituiti, -1 e -99 sono riservati da SQL Server. sqlcmd definisce i valori restituiti aggiuntivi seguenti:The return values -1 to -99 are reserved by SQL Server ; sqlcmd defines the following additional return values:

Valori restituitiReturn Values DescrizioneDescription
-100-100 Si è verificato un errore prima di selezionare il valore restituito.Error encountered prior to selecting return value.
-101-101 Selezionando il valore restituito non si sono trovate righe.No rows found when selecting return value.
-102-102 Si è verificato un errore di conversione durante la selezione del valore restituito.Conversion error occurred when selecting return value.

GO [count]GO [count]
GO indica sia la fine di un batch e l'esecuzione di eventuali memorizzati nella cache delle istruzioni Transact-SQL. Il batch viene eseguito più volte come batch separato; è possibile dichiarare una variabile più di una volta in un unico batch.GO signals both the end of a batch and the execution of any cached Transact-SQL statements.The batch is executed multiple times as separate batches; you cannot declare a variable more than once in a single batch.

Comandi variMiscellaneous Commands
:r < filename>:r < filename >
Analizza le istruzioni Transact-SQL aggiuntive e sqlcmd comandi dal file specificato da < filename>nella cache dell'istruzione.Parses additional Transact-SQL statements and sqlcmd commands from the file specified by <filename>into the statement cache.

Se il file contiene istruzioni Transact-SQL che non sono seguite da passare, è necessario immettere passare nella riga che segue : r.If the file contains Transact-SQL statements that are not followed by GO, you must enter GO on the line that follows :r.

Nota

< filename > viene letto in relazione alla directory di avvio in cui l'utilità sqlcmd è stata eseguita.< filename > is read relative to the startup directory in which sqlcmd was run.

Il file verrà letto ed eseguito dopo che è stato rilevato un carattere di terminazione di batch.The file will be read and executed after a batch terminator is encountered. È possibile eseguire più comandi :r .You can issue multiple :r commands. Il file può contenere qualsiasi comando sqlcmd .The file may include any sqlcmd command. incluso il carattere di terminazione di batch GO.This includes the batch terminator GO.

Nota

Il conteggio delle righe visualizzato in modalità interattiva viene incrementato di 1 per ogni comando :r rilevato.The line count that is displayed in interactive mode will be increased by one for every :r command encountered. Il comando :r verrà visualizzato nell'output del comando LIST.The :r command will appear in the output of the list command.

:Serverlist:Serverlist
Elenca i server configurati localmente e i nomi dei server che trasmettono in rete tramite broadcast.Lists the locally configured servers and the names of the servers broadcasting on the network.

:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]]:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]]
Si connette a un'istanza di SQL Server.Connects to an instance of SQL Server . e inoltre chiude la connessione corrente.Also closes the current connection.

Opzioni di timeout:Time-out options:

00 attesa infinitawait forever
n>0n>0 attesa di n secondiwait for n seconds

La variabile di scripting SQLCMDSERVER si adatterà alla connessione attiva corrente.The SQLCMDSERVER scripting variable will reflect the current active connection.

Se timeout viene omesso, il valore predefinito corrisponde al valore della variabile SQLCMDLOGINTIMEOUT.If timeout is not specified, the value of the SQLCMDLOGINTIMEOUT variable is the default.

Se si specifica solo user_name , come opzione o come variabile di ambiente, all'utente verrà chiesto di immettere una password.If only user_name is specified (either as an option, or as an environment variable), the user will be prompted to enter a password. Ciò non si verifica se è stata impostata la variabile di ambiente SQLCMDUSER o SQLCMDPASSWORD.This is not true if the SQLCMDUSER or SQLCMDPASSWORD environment variables have been set. Se non si specificano opzioni o variabili di ambiente, per la connessione verrà utilizzata la modalità di autenticazione di Windows.If neither options nor environment variables are provided, Windows Authentication mode is used to login. Per connettersi a un'istanza, ad esempio instance1, di SQL Server, myserver, utilizzando la sicurezza integrata di utilizzare le operazioni seguenti:For example to connect to an instance, instance1, of SQL Server , myserver, by using integrated security you would use the following:

:connect myserver\instance1

Per connettersi all'istanza predefinita di myserver utilizzando le variabili di scripting, specificare:To connect to the default instance of myserver using scripting variables, you would use the following:

:setvar myusername test

:setvar myservername myserver

:connect $(myservername) $(myusername)

[:] !!< comando>[:] !!< command>
Esegue i comandi del sistema operativo.Executes operating system commands. Per eseguire un comando del sistema operativo, digitare due punti esclamativi all'inizio della riga (!!) seguiti dal comando del sistema operativo.To execute an operating system command, start a line with two exclamation marks (!!) followed by the operating system command. Esempio:For example:

:!! Dir

Nota

Il comando viene eseguito nel computer in cui è in esecuzione sqlcmd .The command is executed on the computer on which sqlcmd is running.

:XML [ON | OFF]:XML [ON | OFF]
Per altre informazioni, vedere Formato di output XML e Formato di output JSON in questo argomentoFor more information, see XML Output Format and JSON Output Format in this topic

:Help:Help
Elenca i comandi di sqlcmd con una breve descrizione di ognuno.Lists sqlcmd commands together with a short description of each command.

Nomi di file per sqlcmdsqlcmd File Names

È possibile specificare i file di input disqlcmd con l'opzione -i o il comando :r .sqlcmd input files can be specified with the -i option or the :r command. I file di output possono essere specificati con l'opzione -o oppure con i comandi :Error, :Out e :Perftrace .Output files can be specified with the -o option or the :Error, :Out and :Perftrace commands. Di seguito vengono illustrate alcune linee guida per l'utilizzo di tali file:The following are some guidelines for working with these files:

  • :Error, :Out e :Perftrace è consigliabile usare valori <filename>distinti.:Error, :Out and :Perftrace should use separate <filename>. Se viene usato lo stesso valore <filename> , è possibile che gli input di tali comandi vengano confusi.If the same <filename> is used, inputs from the commands may be intermixed.

  • Se un file di input che si trova in un server remoto viene chiamato da sqlcmd in un computer locale e contiene un percorso di file con unità come :out c:\OutputFile.txt,If an input file that is located on a remote server is called from sqlcmd on a local computer and the file contains a drive file path such as :out c:\OutputFile.txt. il file di output verrà creato nel computer locale e non nel server remoto.The output file will be created on the local computer and not on the remote server.

  • Percorsi di file validi includono: C:\<filename>, \\<Server>\<Share$>\<filename> e "C:\Some Folder\<file name>".Valid file paths include: C:\<filename>, \\<Server>\<Share$>\<filename> and "C:\Some Folder\<file name>". Se il percorso contiene uno spazio, utilizzare le virgolette.If there is a space in the path, use quotation marks.

  • Ogni nuova sessione di sqlcmd sovrascriverà i file esistenti con gli stessi nomi.Each new sqlcmd session will overwrite existing files that have the same names.

Messaggi informativiInformational Messages

sqlcmd stampa qualsiasi messaggio informativo inviato dal server.sqlcmd prints any informational message that are sent by the server. Nell'esempio seguente, dopo l'esecuzione di istruzioni Transact-SQL, viene stampato un messaggio informativo.In the following example, after the Transact-SQL statements are executed, an informational message is printed.

Al prompt dei comandi digitare quanto segue:At the command prompt, type the following:

sqlcmd

At the sqlcmd prompt type:

USE AdventureWorks2012;

GO

Se si preme INVIO, verrà stampato il messaggio informativo seguente: "Il contesto di database è stato sostituito con 'AdventureWorks2012'".When you press ENTER, the following informational message is printed: "Changed database context to 'AdventureWorks2012'."

Formato di output delle query Transact-SQLOutput Format from Transact-SQL Queries

sqlcmd stampa prima di tutto un'intestazione di colonna contenente i nomi delle colonne specificati nell'elenco di selezione.sqlcmd first prints a column header that contains the column names specified in the select list. I nomi di colonna sono delimitati tramite il carattere specificato da SQLCMDCOLSEP.The column names are separated by using the SQLCMDCOLSEP character. Per impostazione predefinita, viene utilizzato uno spazio.By default, this is a space. Se la lunghezza del nome di colonna è minore della larghezza della colonna, nell'output vengono inseriti caratteri di riempimento fino alla colonna successiva.If the column name is shorter than the column width, the output is padded with spaces up to the next column.

La riga sarà seguita da una riga di separazione costituita da una serie di trattini.This line will be followed by a separator line that is a series of dash characters. Di seguito è riportato un esempio di output.The following output shows an example.

Avviare sqlcmd.Start sqlcmd. Al prompt dei comandi di sqlcmd digitare quanto segue:At the sqlcmd command prompt, type the following:

USE AdventureWorks2012;

SELECT TOP (2) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

Se si preme INVIO, viene restituito il set di risultati seguente.When you press ENTER, the following result set is retuned.

BusinessEntityID FirstName LastName

---------------- ------------ ----------

285 Syed Abbas

293 Catherine Abel

(2 row(s) affected)

Nonostante la larghezza della colonna BusinessEntityID sia soltanto di 4 caratteri, la colonna viene espansa in modo da contenere un nome di colonna più lungo.Although the BusinessEntityID column is only 4 characters wide, it has been expanded to accommodate the longer column name. Per impostazione predefinita, l'output viene troncato a 80 caratteri.By default, output is terminated at 80 characters. Questo valore può essere modificato usando l'opzione -w oppure impostando la variabile di scripting SQLCMDCOLWIDTH.This can be changed by using the -w option, or by setting the SQLCMDCOLWIDTH scripting variable.

Formato di output XML XML Output Format

L'output XML risultante dalla clausola FOR XML viene restituito non formattato in un flusso continuo.XML output that is the result of a FOR XML clause is output, unformatted, in a continuous stream.

Quando è previsto output XML, utilizzare il comando: :XML ON.When you expect XML output, use the following command: :XML ON.

Nota

sqlcmd restituisce messaggi di errore nel formato standard.sqlcmd returns error messages in the usual format. Si noti che anche l'output dei messaggi di errore viene generato nel flusso di testo XML in formato XML.Notice that the error messages are also output in the XML text stream in XML format. Usando :XML ON, sqlcmd non visualizza messaggi informativi.By using :XML ON, sqlcmd does not display informational messages.

Per disattivare la modalità XML, utilizzare il comando: :XML OFF.To set the XML mode off, use the following command: :XML OFF.

Il comando GO non deve essere immesso prima dell'esecuzione del comando XML OFF, poiché il comando XML OFF reimposta sqlcmd sull'output orientato alle righe.The GO command should not appear before the XML OFF command is issued because the XML OFF command switches sqlcmd back to row-oriented output.

Non possono essere contemporaneamente presenti dati XML (di flusso) e dati del set di righe.XML (streamed) data and rowset data cannot be mixed. Se il comando XML ON non è stato eseguito prima che venga eseguita un'istruzione Transact-SQL che genera flussi XML, l'output verrà visualizzato correttamente.If the XML ON command has not been issued before a Transact-SQL statement that outputs XML streams is executed, the output will be garbled. Se è stato eseguito il comando XML ON, è possibile eseguire istruzioni Transact-SQL che generano normali set di righe.If the XML ON command has been issued, you cannot execute Transact-SQL statements that output regular row sets.

Nota

Il comando :XML non supporta l'istruzione SET STATISTICS XML.The :XML command does not support the SET STATISTICS XML statement.

Formato di output JSON JSON Output Format

Quando è previsto un output JSON, usare il comando seguente: :XML ON.When you expect JSON output, use the following command: :XML ON. In caso contrario, l'output includerà sia il nome di colonna che il testo JSON.Otherwise the output includes both the column name and the JSON text. Questo output non è valido per JSON.This output is not valid JSON.

Per disattivare la modalità XML, utilizzare il comando: :XML OFF.To set the XML mode off, use the following command: :XML OFF.

Per altre informazioni, vedere Formato di output XML in questo argomento.For more info, see XML Output Format in this topic.

Uso dell'autenticazione di Azure Active DirectoryUsing Azure Active Directory Authentication

Esempi di uso dell'autenticazione di Azure Active Directory:Examples using Azure Active Directory Authentication:

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net  -G  -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -U bob@contoso.com -P MyAADPassword -G -l 30

Procedure consigliate per sqlcmdsqlcmd Best Practices

Utilizzare le procedure seguenti per ottimizzare i livelli di sicurezza ed efficienza.Use the following practices to help maximize security and efficiency.

  • Utilizzare la sicurezza integrata.Use integrated security.

  • Usare -X negli ambienti automatizzati.Use -X in automated environments.

  • Proteggere i file di input e di output utilizzando autorizzazioni del file system NTFS appropriate.Secure input and output files by using appropriate NTFS file system permissions.

  • Per incrementare le prestazioni, eseguire il maggior numero di operazioni possibile in un'unica sessione di sqlcmd , anziché in una serie di sessioni.To increase performance, do as much in one sqlcmd session as you can, instead of in a series of sessions.

  • Per l'esecuzione di batch o query, impostare valori di timeout superiori rispetto al tempo che si prevede sarà necessario per eseguire il batch o la query.Set time-out values for batch or query execution higher than you expect it will take to execute the batch or query.

Vedere ancheSee Also

Avvio dell'utilità sqlcmd Start the sqlcmd Utility
Esecuzione di file script Transact-SQL mediante sqlcmd Run Transact-SQL Script Files Using sqlcmd
Utilizzo dell'utilità sqlcmd Use the sqlcmd Utility
Utilizzo di sqlcmd con variabili di scripting Use sqlcmd with Scripting Variables
Connessione al Motore di database tramite sqlcmd Connect to the Database Engine With sqlcmd
Modifica di script SQLCMD con l'editor di query Edit SQLCMD Scripts with Query Editor
Gestire passaggi di processo Manage Job Steps
Creare un passaggio di processo CmdExecCreate a CmdExec Job Step