Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Piattaforma di strumenti analitici (PDW)
L'utilità osql consente di immettere istruzioni Transact-SQL, procedure di sistema e file script. Questa utilità comunica con il server tramite ODBC.
Importante
Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare pertanto di utilizzarla in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni che attualmente utilizzano questa funzionalità. In alternativa, usare sqlcmd . Per altre informazioni, vedere sqlcmd Utility.
Sintassi
osql
[-?] |
[-L] |
[
{
{-Ulogin_id [-Ppassword]} | -E }
[-Sserver_name[\instance_name]] [-Hwksta_name] [-ddb_name]
[-ltime_out] [-ttime_out] [-hheaders]
[-scol_separator] [-wcolumn_width] [-apacket_size]
[-e] [-I] [-D data_source_name]
[-ccmd_end] [-q "query"] [-Q"query"]
[-n] [-merror_level] [-r {0 | 1}]
[-iinput_file] [-ooutput_file] [-p]
[-b] [-u] [-R] [-O]
]
Argomenti
-?
Visualizza il riepilogo della sintassi delle opzioni di osql .
-L
Elenca i server configurati localmente e i nomi dei server che trasmettono in rete.
Nota
A causa della natura delle trasmissioni in rete, è possibile che osql non riceva una risposta tempestiva da tutti i server e pertanto che l'elenco di server restituito sia diverso per ogni chiamata di questa opzione.
-Ulogin_id
È l'ID di accesso dell'utente. Negli ID di accesso viene fatta distinzione tra maiuscole e minuscole.
-Ppassword
Password specificata dall'utente. Se si omette l'opzione -P , osql richiede una password. Se l'opzione -P viene specificata alla fine del prompt dei comandi senza indicare una password, osql usa la password predefinita (NULL).
Importante
Non usare una password vuota. Usare una password complessa. Per altre informazioni, vedere Strong Passwords.
Per le password viene fatta distinzione tra maiuscole e minuscole.
La variabile di ambiente OSQLPASSWORD consente di impostare una password predefinita per la sessione corrente. Non è pertanto necessario specificare una password a livello di codice nei file batch.
Se si specifica l'opzione -P e si omette la password, osql verifica innanzitutto la variabile OSQLPASSWORD. Se non viene impostato alcun valore, osql usa la password predefinita NULL. Nell'esempio seguente viene impostata la variabile OSQLPASSWORD al prompt dei comandi e quindi si accede all'utilità osql :
C:\>SET OSQLPASSWORD=abracadabra
C:\>osql
Importante
Per nascondere la password, non specificare l'opzione -P in combinazione con l'opzione -U . Dopo aver specificato il comando osql con -U e altre opzioni (non specificare -P), premere Invio. Il comando osql richiederà l'immissione di una password. Questo metodo garantisce che la password venga nascosta durante l'immissione.
-E
Utilizza una connessione trusted anziché richiedere una password.
-Sserver_name[\instance_name]
Specifica l'istanza di SQL Server alla quale connettersi. Specificare server_name per connettersi all'istanza predefinita di SQL Server nel server. Specificare server_name\instance_name per connettersi a un'istanza denominata di SQL Server in tale server. Se non si specifica alcun server, osql si connette all'istanza predefinita di SQL Server nel computer locale. Questa opzione è obbligatoria per l'esecuzione di osql da un computer remoto sulla rete.
-Hwksta_name
Nome della workstation. Il nome della workstation viene archiviato in sysprocesses.hostname ed è visualizzato tramite sp_who. Se omesso, viene utilizzato il nome del computer corrente.
-ddb_name
Genera un'istruzione USE db_name all'avvio di osql .
-ltimeout
Specifica il numero di secondi prima del timeout di un account di accesso osql. Il timeout predefinito per l'accesso a osql è di otto secondi.
-ttimeout
Specifica il numero di secondi prima del timeout di un comando. Se non viene specificato un valore time_out, i comandi non eseguono il timeout.
-hIntestazioni
Specifica il numero di righe da stampare tra le intestazioni delle colonne. Per impostazione predefinita, le intestazioni vengono stampate una volta per ogni set di risultati delle query. Utilizzare -1 per specificare che non verranno stampate intestazioni. Se si usa -1, non inserire spazi tra il parametro e l'impostazione (-h-1e non -h -1).
-scol_separator
Specifica il carattere separatore di colonne che, per impostazione predefinita, è uno spazio vuoto. Per utilizzare caratteri con un significato speciale per il sistema operativo (ad esempio | ; & <>), racchiudere il carattere tra virgolette doppie (").
-wcolumn_width
Consente di impostare la larghezza della schermata per l'output. Il valore predefinito è 80 caratteri. Se una riga di output raggiunge la larghezza massima della schermata, viene suddivisa su più righe.
-adimensione_pacchetto
Consente di richiedere un pacchetto di dimensioni diverse. I valori validi per packet_size sono compresi tra 512 e 65535. Il valore predefinito per osql è il valore predefinito del server. Aumentando le dimensioni del pacchetto si possono ottenere miglioramenti delle prestazioni di esecuzione di script di grandi dimensioni, che includono numerose istruzioni SQL tra i comandi GO. I test Microsoft indicano che, per le operazioni di copia bulk, l'impostazione che garantisce le prestazioni più veloci è in genere 8192. È possibile richiedere una dimensione maggiore del pacchetto, ma se questa non è disponibile osql usa il valore predefinito del server.
-e
Esegue l'eco dell'input.
-Io
Attiva l'opzione di connessione QUOTED_IDENTIFIER.
-Ddata_source_name
Stabilisce una connessione a un'origine dei dati ODBC definita mediante il driver ODBC per SQL Server. La connessione osql usa le opzioni specificate nell'origine dei dati.
Nota
Tale opzione non può essere utilizzata con origini dei dati definite per altri driver.
-ccmd_end
Specifica il carattere di terminazione del comando. Per impostazione predefinita, i comandi vengono terminati e inviati a SQL Server tramite l'immissione della parola GO su una riga a sé stante. Se si reimposta il carattere di terminazione del comando, non utilizzare parole riservate di Transact-SQL o caratteri con un significato speciale per il sistema operativo, indipendentemente dal fatto che siano preceduti da una barra rovesciata.
-q "query"
Esegue una query all'avvio di osql senza uscire da osql al termine della query. Si noti che la query non dovrebbe includere GO. Se si emette una query da un file batch, utilizzare le variabili %variabile% o le variabili di ambiente %variabile%. Ad esempio:
SET table=sys.objects
osql -E -q "select name, object_id from %table%"
Racchiudere la query tra virgolette doppie e utilizzare le virgolette singole per altri elementi inclusi nella query.
-Q"query"
Esegue una query ed esce immediatamente dal programma osql. Racchiudere la query tra virgolette doppie e utilizzare le virgolette singole per altri elementi inclusi nella query.
-n
Rimuove la numerazione e il simbolo del prompt (>) dalle righe di input.
-mlivello_errore
Personalizza la visualizzazione dei messaggi di errore. Per gli errori con livello di gravità pari o superiore a quello specificato vengono visualizzati il numero, lo stato e il livello di errore del messaggio. Per gli errori con livelli di gravità inferiori a quello specificato non viene visualizzato nulla. Usare -1 per specificare che con i messaggi, anche quelli informativi, devono essere restituite anche tutte le rispettive intestazioni. Se si usa -1, non inserire spazi tra il parametro e l'impostazione (-m-1e non -m -1).
-r { 0| 1}
Reindirizza l'output dei messaggi sullo schermo (stderr). Se il parametro viene omesso o si specifica 0, vengono reindirizzati solo i messaggi di errore con gravità pari o superiore a 11. Specificando 1, tutto l'output dei messaggi (compresa l'istruzione "print") viene reindirizzato.
-iinput_file
Identifica il file che include un batch di istruzioni SQL o stored procedure. L'operatore di confronto minore di (<) può essere utilizzato al posto di -i.
-ooutput_file
Identifica il file che riceve l'output di osql. L'operatore di confronto maggiore di (>) può essere usato al posto di -o.
Se input_file non è un file Unicode e l'opzione -u non è specificata, output_file viene archiviato in formato OEM. Se input_file è un file Unicode o l'opzione -u è specificata, output_file viene archiviato in formato Unicode.
-p
Stampa le statistiche sulle prestazioni.
-b
Specifica che osql termina e restituisce un valore DOS ERRORLEVEL quando si verifica un errore. Il valore restituito alla variabile DOS ERRORLEVEL è 1 se al messaggio di errore di SQL Server è associato un livello di gravità maggiore o uguale a 11. In caso contrario, il valore restituito è 0. I file batch Microsoft MS-DOS consentono di verificare il valore di DOS ERRORLEVEL, nonché di gestire correttamente l'errore.
-u
Specifica l'archiviazione di output_file in formato Unicode, indipendentemente dal formato di input_file.
-R
Specifica che il driver ODBC di SQL Server utilizza le impostazioni del client per convertire i dati relativi a valuta, data e ora in dati di tipo carattere.
-O
Disattiva determinate caratteristiche di osql in modo che il funzionamento dell'utilità corrisponda a quello delle precedenti versioni di isql. Vengono disattivate le funzionalità seguenti:
Elaborazione batch EOF
Adattamento automatico della larghezza della console
Messaggi estesi
L'opzione imposta inoltre il valore predefinito di DOS ERRORLEVEL su -1.
Nota
Le opzioni -n, -O e -D non sono più supportate da osql.
Osservazioni:
L'utilità osql viene avviata direttamente dal sistema operativo con le opzioni sensibili alle maiuscole elencate di seguito. Dopo l'avvio di osql , accetta istruzioni SQL e le invia in modo interattivo a SQL Server. I risultati vengono formattati e visualizzati sullo schermo (stdout). Per uscire da osqlusare QUIT o EXIT.
Se all'avvio di osql non si specifica un nome utente, SQL Server verifica le variabili di ambiente e usa tali valori, ad esempio osqluser=(user) o osqlserver=(server). Se non sono state impostate variabili di ambiente, viene utilizzato il nome utente della workstation. Se non si specifica un server, viene utilizzato il nome della workstation.
Se non si specifica l'opzione -U né l'opzione -P, SQL Server cerca di stabilire la connessione tramite la modalità di autenticazione di Microsoft Windows. L'autenticazione si basa sull'account di Microsoft Windows dell'utente che esegue osql.
L'utilità osql usa l'API ODBC. L'utilità utilizza le impostazioni predefinite del driver ODBC di SQL Server per le opzioni di connessione ISO di SQL Server. Per ulteriori informazioni, vedere Effects of ANSI Options (informazioni in lingua inglese).
Nota
L'utilità osql non supporta i tipi di dati CLR definiti dall'utente. Per elaborare questi tipi di dati, è necessario usare l'utilità sqlcmd . Per altre informazioni, vedere sqlcmd Utility.
Comandi OSQL
Oltre alle istruzioni Transact-SQL in osql, sono disponibili anche questi comandi.
Comando | Descrizione |
---|---|
VAI | Esegue tutte le istruzioni immesse dopo l'ultimo comando GO. |
REIMPOSTA | Cancella tutte le istruzioni immesse. |
QUIT o EXIT( ) | Consente di uscire da osql. |
CTRL+C | Termina una query senza uscire da osql. |
Nota
Le!! i comandi ed ED non sono più supportati da osql.
I caratteri di terminazione dei comandi GO (predefinito), RESET, EXIT, QUIT e CTRL+C vengono riconosciuti solo se specificati all'inizio della riga, subito dopo il prompt osql .
GO indica sia la fine di un batch che l'esecuzione di eventuali istruzioni Transact-SQL memorizzate nella cache. Quando si preme INVIO alla fine di ogni riga di input, osql memorizza nella cache le istruzioni della riga. Quando si preme INVIO dopo aver digitato GO, tutte le istruzioni memorizzate nella cache vengono inviate in batch a SQL Server.
La versione corrente dell'utilità osql funziona come se alla fine di tutti gli script eseguiti fosse presente un comando GO implicito. Di conseguenza vengono eseguite tutte le istruzioni dello script.
Terminare un comando digitando una riga che inizia con un carattere di terminazione del comando. Puoi seguire il carattere di terminazione con un numero intero per specificare quante volte eseguire il comando. Ad esempio, per eseguire il comando seguente 100 volte, digitare:
SELECT x = 1
GO 100
I risultati vengono stampati solo una volta al termine dell'esecuzione. osql non accetta più di 1.000 caratteri per riga. Le istruzioni lunghe dovrebbero essere distribuite su più righe.
Le funzionalità per la chiamata di comandi di Windows consentono di richiamare e modificare le istruzioni osql . Per cancellare il buffer di query esistente digitare RESET.
Durante l'esecuzione di stored procedure, osql stampa una riga vuota tra ogni set di risultati di un batch. Inoltre, il messaggio "Righe interessate: 0" non viene visualizzato se non è riferibile all'istruzione eseguita.
Uso interattivo di osql
Per usare osql interattivamente, al prompt dei comandi digitare il comando osql e le opzioni desiderate.
Per leggere un file contenente una query, ad esempio Stores.qry, da eseguire con osql , digitare un comando analogo al seguente:
osql -E -i stores.qry
Per leggere un file contenente una query, ad esempio Titles.qry, e indirizzare i risultati a un altro file, digitare un comando simile al seguente:
osql -E -i titles.qry -o titles.res
Importante
Quando possibile, usare l'opzione -E (connessione attendibile).
Quando si usa osql interattivamente, è possibile leggere un file del sistema operativo nel buffer dei comandi mediante :rfile_name. In questo modo lo script SQL in file_name viene inviato direttamente al server come batch singolo.
Nota
Quando si usa osql, in SQL Server la presenza del separatore di batch GO in un file script SQL viene considerata un errore di sintassi.
Inserimento di commenti
L'utilità osqlconsente di inserire commenti in un'istruzione Transact-SQL inviata a SQL Server. Sono supportati due tipi di indicatori di commento: --
e /*...*/
.
Utilizzo di EXIT per la restituzione dei risultati in osql
Il risultato di un'istruzione SELECT può essere usato come valore restituito da osql. Se numerica, l'ultima colonna dell'ultima riga di risultati viene convertita in un valore integer di 4 byte (long). MS-DOS passa il byte di ordine inferiore al processo padre o al livello di errore nel sistema operativo. Windows passa l'intero valore intero di 4 byte. La sintassi è:
EXIT ( < query > )
Ad esempio:
EXIT(SELECT @@ROWCOUNT)
È inoltre possibile includere il parametro EXIT in un file batch. Ad esempio:
osql -E -Q "EXIT(SELECT COUNT(*) FROM '%1')"
L'utilità osql passa al server tutti gli elementi racchiusi tra parentesi () senza modificarli. Se una stored procedure di sistema seleziona un set e restituisce un valore, viene restituita solo la selezione. 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.
Ci sono quattro formati EXIT:
- USCITA
Nota
Non esegue il batch, si interrompe immediatamente e non restituisce alcun valore.
- USCITA**()**
Nota
Esegue il batch, quindi termina e non restituisce alcun valore.
- USCITA**(query)**
Nota
Esegue il batch, inclusa la query, quindi viene chiusa dopo aver restituito i risultati della query.
- RAISERROR con codice stato 127.
Nota
Se in uno script osql si usa RAISERROR e viene generato un errore con stato 127, l'utilità osql viene chiusa e al client viene restituito l'ID di messaggio. Ad esempio:
RAISERROR(50001, 10, 127)
Questo errore provoca l'interruzione dello script osql e la restituzione dell'ID di messaggio 50001 al client.
I valori restituiti compresi tra -1 e -99 sono riservati da SQL Server e osql definisci tali valori:
-100
Si è verificato un errore prima di selezionare il valore restituito.
-101
Non si sono trovate righe quando si seleziona il valore restituito.
-102
Si è verificato un errore di conversione durante la selezione del valore restituito.
Visualizzazione dei tipi di dati money e smallmoney
osql visualizza i tipi di dati money e smallmoney con due cifre decimali sebbene in SQL Server il valore venga archiviato internamente con quattro cifre decimali. Considerare l'esempio :
SELECT CAST(CAST(10.3496 AS money) AS decimal(6, 4))
GO
Questa istruzione restituisce il risultato 10.3496
, che indica che il valore viene archiviato con tutte le cifre decimali.
Vedi anche
Commento (MDX)
-- (Commento) (MDX)
CAST e CONVERT (Transact-SQL)
RAISERROR (Transact-SQL)