Connessione con sqlcmd

Scaricare il driver ODBC

L'utilità sqlcmd è disponibile con Microsoft ODBC Driver for SQL Server su Linux e macOS.

I seguenti comandi indicano come usare l'autenticazione di Windows (Kerberos) e l'autenticazione di SQL Server, rispettivamente:

sqlcmd -E -Sxxx.xxx.xxx.xxx
sqlcmd -Sxxx.xxx.xxx.xxx -Uxxx -Pxxx

Opzioni disponibili

Le opzioni seguenti sono disponibili in sqlcmd su Linux e macOS:

-?
Visualizza l'utilizzo di sqlcmd.

-a
Richiede la dimensione di un pacchetto.

-b
Termina il processo batch se viene rilevato un errore.

-c batch_terminator
Specifica il carattere di terminazione del batch.

-C
Considera attendibile il certificato del server.

-d database_name
Genera un'istruzione USE nome_database quando si avvia sqlcmd.

-D
Indica che il valore passato all'opzione -S di sqlcmd deve essere interpretato come nome dell'origine dati (DSN). Per altre informazioni, vedere "Supporto di DSN in sqlcmd e bcp" alla fine di questo articolo.

-e
Scrive gli script di input nel dispositivo di output standard (stdout).

-E
Usa una connessione trusted (autenticazione integrata). Per altre informazioni sull'esecuzione di connessioni trusted che usano l'autenticazione integrata da un client Linux o macOS, vedere Uso dell'autenticazione integrata.

-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
Specifica le tabelle codici di input e output. Il numero specificato per codepage è un valore numerico che indica una tabella codici di Linux installata. (disponibile dalla versione 17.5.1.1)

-G
Questa opzione viene usata dal client durante la connessione al database SQL di Azure, all’istanza gestita di SQL di Azur o ad Azure Synapse Analytics per specificare che l'utente deve essere autenticato con Microsoft Entra ID (in precedenza, Azure Active Directory). Può essere combinato con solo l'opzione -P per usare l'autenticazione del token di accesso (v17.8+). Questa opzione imposta la variabile di scripting SQLCMDUSEAAD = true di sqlcmd . L'opzione -G richiede almeno sqlcmd versione 17.6. Per determinare la versione, eseguire sqlcmd -?.

Importante

L'opzione -G si applica solo al database SQL di Azure, all’istanza gestita di SQL di Azur e ad Azure Synapse Analytics.

L'autenticazione integrata di Microsoft Entra non è attualmente supportata in Linux o macOS. Per l'autenticazione integrata di Microsoft Entra sono necessari il driver Microsoft ODBC 17 per SQL Server versione 17.6.1 successiva e un ambiente Kerberos configurato correttamente.

-h numero_di_righe
Specifica il numero di righe da stampare tra le intestazioni delle colonne.

-H
Specifica il nome di una workstation.

-i file_input[,file_input[,...]]
Identifica il file che include un batch di istruzioni SQL o stored procedure.

-I
Imposta l'opzione di connessione SET QUOTED_IDENTIFIER su ON.

-k
Rimuove o sostituisce i caratteri di controllo.

-K application_intent
Dichiara il tipo di carico di lavoro dell'applicazione in caso di connessione a un server. L'unico valore attualmente supportato è ReadOnly. Se l'opzione -K non è specificata, sqlcmd non supporta la connettività a una replica secondaria in un gruppo di disponibilità Always On. Per altre informazioni, vedere Driver ODBC in Linux e macOS - Disponibilità elevata e ripristino di emergenza.

Nota

-K non è supportata in CTP per SUSE Linux. È tuttavia possibile specificare la parola chiave ApplicationIntent=ReadOnly in un file DSN passato a sqlcmd. Per altre informazioni, vedere "Supporto di DSN in sqlcmd e bcp" alla fine di questo articolo.

-l timeout
Specifica il numero di secondi che devono trascorrere prima che si verifichi il timeout di un accesso a sqlcmd quando si tenta la connessione a un server.

-m error_level
Controlla i messaggi di errore inviati a stdout.

-M multisubnet_failover
Specificare sempre -M in caso di connessione al listener di un gruppo di disponibilità di SQL Server 2012 (11.x) o a un'istanza del cluster di failover di SQL Server 2012 (11.x). -M consente un rilevamento più veloce dei failover e una connessione più rapida al server attualmente attivo. Se non si specifica -M, significa che l'opzione -M è disattivata. Per altre informazioni sui gruppi di disponibilità Always On, vedere Driver ODBC in Linux e macOS - Disponibilità elevata e ripristino di emergenza.

Nota

-M non è supportata in CTP per SUSE Linux. È tuttavia possibile specificare la parola chiave MultiSubnetFailover=Yes in un file DSN passato a sqlcmd. Per altre informazioni, vedere "Supporto di DSN in sqlcmd e bcp" alla fine di questo articolo.

-N[s|m|o]
Imposta la modalità di crittografia della connessione su Strict, Mandatory o Optional, rispettivamente. Se l'opzione viene omessa, l'impostazione predefinita è Mandatory. ([s|m|o] aggiunto in sqlcmd 18.0)

-o output_file
Identifica il file che riceve l'output da sqlcmd.

-p
Stampa le statistiche delle prestazioni per ogni set di risultati.

-P
Specifica una password utente. Se usato con l'opzione -G senza -U, specifica un file che contiene un token di accesso (versione 17.8 e successive). Il file del token deve essere in formato UTF-16LE (senza BOM).

I token di accesso si possono ottenere in vari modi. È importante assicurarsi che il token di accesso sia corretto byte per byte, perché verrà inviato così com'è. Di seguito è riportato un comando di esempio che ottiene un token di accesso. Il comando usa i comandi dell'interfaccia della riga di comando di Azure e Linux e lo salva in un file nel formato corretto. Se la codifica predefinita del sistema o del terminale non è ASCII o UTF-8, potrebbe essere necessario modificare le opzioni iconv. Assicurarsi di proteggere attentamente il file risultante ed eliminarlo quando non è più necessario.

az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile

-q query_rigacomandi
Esegue una query all'avvio di sqlcmd, ma non si chiude al termine dell'esecuzione della query.

-Q query_rigacomandi
Esegue una query all'avvio di sqlcmd. sqlcmd verrà chiuso al termine della query.

-r
Reindirizza i messaggi di errore a stderr.

-R
Imposta il driver ODBC in modo che utilizzi le impostazioni internazionali del client in caso di conversione dei dati relativi a valuta, data e ora in dati di tipo carattere. Attualmente viene usato solo il formato en_US (inglese Stati Uniti).

-s car_separatore_colonne
Specifica il carattere separatore di colonna.

-S [protocollo:] server[,porta]
Specifica l'istanza di SQL Server a cui connettersi oppure, se si usa -D, un DSN. Il driver ODBC in Linux e macOS richiede - S. L'unico valore di protocollo valido è tcp.

-t query_timeout
Specifica il numero di secondi prima del timeout del comando o dell'istruzione SQL.

-u
Specifica l'archiviazione di output_file in formato Unicode, indipendentemente dal formato di input_file.

-U
login_id Specifica un ID di accesso utente.

-V error_severity_level
Controlla il livello di gravità usato per impostare la variabile ERRORLEVEL.

-w column_width
Specifica la larghezza della schermata per l'output.

-W
Rimuove gli spazi finali da una colonna.

-x
Disabilita la sostituzione delle variabili.

-X
Disabilita i comandi, lo script di avvio e le variabili di ambiente.

-y variable_length_type_display_width
Consente di impostare la variabile di scripting sqlcmd SQLCMDMAXFIXEDTYPEWIDTH.

-Y fixed_length_type_display_width
Consente di impostare la variabile di scripting sqlcmd SQLCMDMAXVARTYPEWIDTH.

-z password
Modifica password.

-Z password
Consente di modificare la password e di uscire.

Comandi disponibili

Nella versione corrente, sono disponibili i comandi seguenti:

  • [:]!!

  • Interagisci:

  • Errore:

  • [:]EXIT

  • GO [conteggio]

  • Help (Guida):

  • Elenco:

  • :Listvar

  • :On Error

  • :Out

  • :Perftrace

  • [:]QUIT

  • :r

  • :RESET

  • :setvar

Opzioni non disponibili

Nella versione corrente non sono disponibili le opzioni seguenti:

-A
Stabilisce la connessione a SQL Server tramite una connessione amministrativa dedicata (DAC). Per informazioni su come effettuare una connessione amministrativa dedicata (DAC), vedere Linee guida per la programmazione.

-L
Elenca i computer server configurati localmente e i nomi dei computer server che trasmettono in rete.

-v
Crea una variabile di scripting di sqlcmd che può essere usata in uno script sqlcmd.

È possibile usare il seguente metodo alternativo: inserire i parametri all'interno di un file, che è quindi possibile aggiungere a un altro file. Questo metodo consentirà di usare un file di parametri per sostituire i valori. Creare ad esempio un file denominato a.sql (file dei parametri) con il contenuto seguente:

:setvar ColumnName object_id
:setvar TableName sys.objects

Creare quindi un file denominato b.sql con i parametri per la sostituzione:

SELECT $(ColumnName) FROM $(TableName)

Nella riga di comando, riunire a.sql e b.sql in c.sql usando i comandi seguenti:

cat a.sql > c.sql

cat b.sql >> c.sql

Eseguire sqlcmd e usare c.sql come file di input:

sqlcmd -S<...> -P<..> -U<..> -I c.sql

Comandi non disponibili

Nella versione corrente non sono disponibili i comandi seguenti:

  • :ED

  • :ServerList

  • :XML

Supporto di DSN in sqlcmd e bcp

È possibile specificare un nome di origine dati (DSN) invece di un nome del server nell'opzione sqlcmd o bcp -S (o comando sqlcmd :Connect) se si specifica -D. Specificando -D, sqlcmd o bcp si connette al server specificato nel DSN dall'opzione -S.

I DSN di sistema vengono archiviati nel file odbc.ini nella directory SysConfigDir ODBC (/etc/odbc.ini nelle installazioni standard). I DSN utente vengono archiviati in .odbc.ini nella home directory di un utente (~/.odbc.ini).

Nei sistemi Windows, i DSN di sistema e utente vengono archiviati nel Registro di sistema e gestiti tramite odbcad32.exe. I DSN di file non sono supportati da bcp e sqlcmd.

Per l'elenco delle voci supportate dal driver, vedere Parole chiave e attributi per stringhe di connessione e DNS.

In un DSN, solo la voce DRIVER è obbligatoria, ma per connettersi a un server remoto, sqlcmd o bcp richiede un valore nell'elemento SERVER. Se l'elemento SERVER è vuoto o non è presente nel DSN, sqlcmd e bcp proveranno a connettersi all'istanza predefinita nel sistema locale.

Quando si usa bcp nei sistemi Windows, SQL Server 2017 (14.x) e versioni precedenti richiedono il driver SQL Native Client 11 (sqlncli11.dll), mentre SQL Server 2019 (15.x) e versioni successive richiedono il driver Microsoft ODBC Driver 17 for SQL Server (msodbcsql17.dll).

Se è specificata la stessa opzione sia nel DSN che nella riga di comando di sqlcmd o di bcp, l'opzione della riga di comando sostituisce il valore usato nel DSN. Se ad esempio il DSN include una voce DATABASE e la riga di comando di sqlcmd include -d, viene usato il valore passato a -d. Se si specifica Trusted_Connection=yes nel DNS, viene usata l'autenticazione Kerberos e il nome utente (-U) e la password (-P), se specificati, vengono ignorati.

Gli script esistenti che richiamano isql possono essere modificati per l'uso di sqlcmd definendo l'alias seguente: alias isql="sqlcmd -D".

Vedi anche

Connessione con bcp
Note sulla versione