sqlcmd - Usare l'utilitàsqlcmd - Use the utility

L'utilità sqlcmd è un'utilità della riga di comando per l'esecuzione interattiva ad hoc di istruzioni e script Transact-SQLTransact-SQL , nonché per l'automazione di attività di scripting Transact-SQLTransact-SQL .The sqlcmd utility is a command-line utility for ad hoc, interactive execution of Transact-SQLTransact-SQL statements and scripts and for automating Transact-SQLTransact-SQL scripting tasks. Per usare sqlcmd in modo interattivo o per compilare file script da eseguire tramite sqlcmd, è necessario conoscere Transact-SQLTransact-SQL.To use sqlcmd interactively, or to build script files to be run using sqlcmd, users must understand Transact-SQLTransact-SQL. L'utilità sqlcmd viene in genere usata nei modi seguenti:The sqlcmd utility is typically used in the following ways:

  • Gli utenti immettono istruzioni Transact-SQLTransact-SQL in modo analogo all'utilizzo del prompt dei comandi.Users enter Transact-SQLTransact-SQL statements in a manner similar to working at the command prompt. I risultati vengono visualizzati al prompt dei comandi.The results are displayed at the command prompt. Per aprire una finestra del prompt dei comandi, immettere "cmd" nella casella di ricerca di Windows e fare clic su Prompt dei comandi per aprirlo.To open a Command Prompt window, enter "cmd" in the Windows search box and click Command Prompt to open. Al prompt dei comandi digitare sqlcmd seguito da un elenco delle opzioni desiderate.At the command prompt, type sqlcmd followed by a list of options that you want. Per un elenco completo delle opzioni supportate da sqlcmd, vedere Utilità sqlcmd.For a complete list of the options that are supported by sqlcmd, see sqlcmd Utility.

  • Gli utenti inviano un processo sqlcmd specificando una singola istruzione Transact-SQLTransact-SQL da eseguire o facendo in modo che l'utilità punti a un file di testo contenente istruzioni Transact-SQLTransact-SQL da eseguire.Users submit a sqlcmd job either by specifying a single Transact-SQLTransact-SQL statement to execute, or by pointing the utility to a text file that contains Transact-SQLTransact-SQL statements to execute. L'output viene in genere indirizzato a un file di testo, ma può essere anche visualizzato al prompt dei comandi.The output is usually directed to a text file, but can also be displayed at the command prompt.

  • Modalità SQLCMD nell'editor di query di SQL Server Management StudioSQL Server Management Studio .SQLCMD mode in SQL Server Management StudioSQL Server Management Studio Query Editor.

  • Oggetti SMO (SQL Server Management Objects)SQL Server Management Objects (SMO)

  • Processi CmdExec di SQL Server Agent.SQL Server Agent CmdExec jobs.

Opzioni di sqlcmd utilizzate di frequenteTypically used sqlcmd options

  • L'opzione server (-S) identifica l'istanza di MicrosoftMicrosoft SQL ServerSQL Server alla quale si connette sqlcmd.Server option (-S) identifies the instance of MicrosoftMicrosoft SQL ServerSQL Server to which sqlcmd connects.

  • Le opzioni di autenticazione (-E, -Ue -P) specificano le credenziali usate da sqlcmd per connettersi all'istanza di SQL ServerSQL Server.Authentication options (-E, -U, and -P) specify the credentials that sqlcmd uses to connect to the instance of SQL ServerSQL Server. NOTA: l'opzione -E è quella predefinita e non deve essere specificata.NOTE: The option -E is the default and does not need to be specified.

  • Le opzioni di input (-Q, -qe -i) identificano la posizione dell'input per sqlcmd.Input options (-Q, -q, and -i) identify the location of the input to sqlcmd.

  • L'opzione di output (-o) specifica il file nel quale sqlcmd inserirà il proprio output.The output option (-o) specifies the file in which sqlcmd is to put its output.

Connettersi all'utilità sqlcmdConnect to the sqlcmd utility

  • Connessione a un'istanza predefinita utilizzando l'autenticazione di Windows per eseguire in modo interattivo le istruzioni Transact-SQLTransact-SQL :Connecting to a default instance by using Windows Authentication to interactively run Transact-SQLTransact-SQL statements:

    sqlcmd -S <ComputerName>  
    

    NOTA: nell'esempio precedente l'opzione -E non è specificata perché è l'opzione predefinita e sqlcmd si connette all'istanza predefinita usando l'autenticazione di Windows.NOTE: In the previous example, -E is not specified because it is the default and sqlcmd connects to the default instance by using Windows Authentication.

  • Connessione a un'istanza denominata utilizzando l'autenticazione di Windows per eseguire in modo interattivo istruzioni Transact-SQLTransact-SQL :Connecting to a named instance by using Windows Authentication to interactively run Transact-SQLTransact-SQL statements:

    sqlcmd -S <ComputerName>\<InstanceName>  
    

    oor

    sqlcmd -S .\<InstanceName>  
    
  • Connessione a un'istanza denominata utilizzando l'autenticazione di Windows e specificando i file di input e di output:Connecting to a named instance by using Windows Authentication and specifying input and output files:

    sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>  
    
  • Connessione all'istanza predefinita nel computer locale usando l'autenticazione di Windows, esecuzione di una query e impostazione di sqlcmd in modo che rimanga in esecuzione al termine dell'esecuzione della query:Connecting to the default instance on the local computer by using Windows Authentication, executing a query, and having sqlcmd remain running after the query has finished running:

    sqlcmd -q "SELECT * FROM AdventureWorks2012.Person.Person"  
    
  • Connessione all'istanza predefinita nel computer locale usando l'autenticazione di Windows, esecuzione di una query, indirizzamento dell'output a un file e impostazione di sqlcmd in modo che venga chiuso al termine dell'esecuzione della query:Connecting to the default instance on the local computer by using Windows Authentication, executing a query, directing the output to a file, and having sqlcmd exit after the query has finished running:

    sqlcmd -Q "SELECT * FROM AdventureWorks2012.Person.Person" -o MyOutput.txt  
    
  • Connessione a un'istanza denominata usando l'autenticazione di SQL ServerSQL Server per eseguire in modo interattivo istruzioni Transact-SQLTransact-SQL con richiesta di password da parte di sqlcmd :Connecting to a named instance using SQL ServerSQL Server Authentication to interactively run Transact-SQLTransact-SQL statements, with sqlcmd prompting for a password:

    sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>  
    

    SUGGERIMENTOHINT!! Per un elenco delle opzioni supportate dall'utilità sqlcmd , eseguire: sqlcmd -?.To see a list of the options that are supported by the sqlcmd utility run: sqlcmd -?.

Eseguire le istruzioni Transact-SQL in modo interattivo usando sqlcmdRun Transact-SQL statements interactively by using sqlcmd

È possibile usare l'utilità sqlcmd in modo interattivo per eseguire istruzioni Transact-SQLTransact-SQL in una finestra del prompt dei comandi.You can use the sqlcmd utility interactively to execute Transact-SQLTransact-SQL statements in a Command Prompt window. Per eseguire in modo interattivo istruzioni Transact-SQLTransact-SQL con sqlcmd, eseguire l'utilità senza usare le opzioni -Q, -q, -Zo -i per specificare eventuali file di input o query.To interactively execute Transact-SQLTransact-SQL statements by using sqlcmd, run the utility without using the -Q, -q, -Z, or -i options to specify any input files or queries. Esempio:For example:

sqlcmd -S <ComputerName>\<InstanceName>

Quando il comando viene eseguito senza file di input o query, sqlcmd si connette all'istanza specificata di SQL ServerSQL Server e quindi visualizza una nuova riga con il valore 1> seguito da un carattere di sottolineatura intermittente denominato prompt di sqlcmd .When the command is executed without input files or queries, sqlcmd connects to the specified instance of SQL ServerSQL Server and then displays a new line with a 1> followed by a blinking underscore that is named the sqlcmd prompt. Il valore 1 indica che si tratta della prima riga di un'istruzione Transact-SQLTransact-SQL , mentre il prompt di sqlcmd è il punto in cui inizia l'istruzione Transact-SQLTransact-SQL quando la si digita.The 1 signifies that this is the first line of a Transact-SQLTransact-SQL statement, and the sqlcmd prompt is the point at which the Transact-SQLTransact-SQL statement will start when you type it in.

Al prompt di sqlcmd è possibile digitare sia istruzioni Transact-SQLTransact-SQL che comandi di sqlcmd , ad esempio GO ed EXIT.At the sqlcmd prompt, you can type both Transact-SQLTransact-SQL statements and sqlcmd commands, such as GO and EXIT. Ogni istruzione Transact-SQLTransact-SQL viene inserita in un buffer denominato cache dell'istruzione.Each Transact-SQLTransact-SQL statement is put in a buffer called the statement cache. Dopo aver digitato il comando SQL ServerSQL Server GO e premuto di INVIO, queste istruzioni vengono inviate a .These statements are sent to SQL ServerSQL Server after you type the GO command and press ENTER. Per chiudere sqlcmd, digitare EXIT o QUIT all'inizio di una nuova riga.To exit sqlcmd, type EXIT or QUIT at the start of a new line.

Per cancellare il contenuto della cache delle istruzioni, digitare :RESET.To clear the statement cache, type :RESET. ^C causa la chiusura di sqlcmd .Typing ^C causes sqlcmd to exit. È anche possibile usare^C per arrestare l'esecuzione della cache delle istruzioni dopo l'esecuzione di un comando GO .^C can also be used to stop the execution of the statement cache after a GO command has been issued.

Transact-SQLTransact-SQL le istruzioni immesse in una sessione interattiva possono essere modificate immettendo il comando :ED e il prompt di sqlcmd . statements that are entered in an interactive session can edited by entering the :ED command and the sqlcmd prompt. Verrà aperto l'editor. Dopo aver modificato l'istruzione Transact-SQLTransact-SQL e chiuso l'editor, l'istruzione Transact-SQLTransact-SQL modificata verrà visualizzata nella finestra di comando.The editor will open and, after editing the Transact-SQLTransact-SQL statement and closing the editor, the revised Transact-SQLTransact-SQL statement will appear in the command window. Immettere GO per eseguire l'istruzione Transact-SQLTransact-SQL modificata.Enter GO to run therevised Transact-SQLTransact-SQL statement.

Stringhe tra virgoletteQuoted strings

I caratteri racchiusi tra virgolette vengono utilizzati senza alcuna pre-elaborazione aggiuntiva, fatta eccezione per il fatto che è possibile inserire virgolette in una stringa immettendo due virgolette consecutive.Characters that are enclosed in quotation marks are used without any additional preprocessing, except that quotations marks can be inserted into a string by entering two consecutive quotation marks. SQL ServerSQL Server tratta questa sequenza di caratteri come virgoletta. treats this character sequence as one quotation mark. La traduzione avviene tuttavia nel server. Le variabili di scripting non vengono espanse se sono incluse all'interno di una stringa.(However, the translation occurs in the server.) Scripting variables will not be expanded when they appear within a string.

Esempio:For example:

sqlcmd

PRINT "Length: 5"" 7'";

GO

Set di risultati:Here is the result set.

Length: 5" 7'

Stringhe che si estendono su più righeStrings that span multiple lines

sqlcmd supporta script con stringhe che si estendono su più righe.sqlcmd supports scripts that have strings that span multiple lines. Ad esempio, l'istruzione SELECT seguente si estende su più righe ma rappresenta una stringa singola eseguita quando si preme INVIO dopo aver digitato GO.For example, the following SELECT statement spans multiple lines but is a single string executed when you press the ENTER key after typing GO.

SELECT First line

FROM Second line

WHERE Third line;

GO

Esempio di esecuzione interattiva dell'utilità sqlcmdInteractive sqlcmd example

Nell'esempio seguente viene illustrato il contenuto della finestra del prompt dei comandi quando si esegue sqlcmd in modo interattivo.This is an example of what you see when you run sqlcmd interactively.

Quando si apre la finestra del prompt dei comandi, è presente una riga simile alla seguente:When you open a Command Prompt window, there is one line similar to:

C:\> _

Questo significa che la cartella C:\ è la cartella corrente. Se si specifica un nome di file, Windows cercherà il file in tale cartella.This means the folder C:\ is the current folder, and if you specify a file name, Windows will look for the file in that folder.

Digitare sqlcmd per connettersi all'istanza predefinita di SQL ServerSQL Server nel computer locale. Il contenuto della finestra del prompt dei comandi sarà il seguente:Type sqlcmd to connect to the default instance of SQL ServerSQL Server on the local computer, and the contents of the Command Prompt window will be:

C:\>sqlcmd

1> _

Questo significa che è stata eseguita la connessione all'istanza di SQL ServerSQL Server e sqlcmd è ora pronto ad accettare istruzioni Transact-SQLTransact-SQL e comandi sqlcmd .This means you have connected to the instance of SQL ServerSQL Server and sqlcmd is now ready to accept Transact-SQLTransact-SQL statements and sqlcmd commands. Il carattere di sottolineatura intermittente dopo il valore 1> è il prompt di sqlcmd che contrassegna la posizione in cui verranno visualizzati le istruzioni e i comandi digitati.The flashing underscore after the 1> is the sqlcmd prompt that marks the location at which the statements and commands you type will be displayed. Digitare ora USE AdventureWorks2012 , premere INVIO, quindi digitare GO e premere INVIO.Now, type USE AdventureWorks2012 and press ENTER, and then type GO and press ENTER. Il contenuto della finestra del prompt dei comandi sarà il seguente:The contents of the Command Prompt window will be:

sqlcmd

USE AdventureWorks2012;

GO

Set di risultati:Here is the result set.

Changed database context to 'AdventureWorks2012'.

1> _

La pressione di INVIO dopo aver immesso USE AdventureWorks2012 segnala all'utilità sqlcmd di iniziare una nuova riga.Pressing ENTER after entering USE AdventureWorks2012 signaled sqlcmd to start a new line. Premendo INVIO, dopo avere digitato GO, viene segnalato a sqlcmd di inviare l'istruzione USE AdventureWorks2012 all'istanza di SQL ServerSQL Server.Pressing ENTER, after you type GO, signaled sqlcmd to send the USE AdventureWorks2012 statement to the instance of SQL ServerSQL Server. sqlcmd restituisce quindi un messaggio per indicare che l'istruzione USE è stata completata correttamente e visualizza un nuovo prompt di 1> per indicare che è possibile immettere un nuovo comando o istruzione.sqlcmd then returned a message to indicate that the USE statement completed successfully and displayed a new 1> prompt as a signal to enter a new statement or command.

Nell'esempio seguente viene illustrato il contenuto della finestra del prompt dei comandi quando si digita un'istruzione SELECT , un comando GO per eseguire l'istruzione SELECTe un comando EXIT per uscire da sqlcmd:The following example shows what the Command Prompt window contains if you type a SELECT statement, a GO to execute the SELECT, and an EXIT to exit sqlcmd:

sqlcmd

USE AdventureWorks2012;

GO

SELECT TOP (3) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

Set di risultati:Here is the result set.

BusinessEntityID FirstName LastName

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

1 Syed Abbas

2 Catherine Abel

3 Kim Abercrombie

(3 rows affected)

1> EXIT

C:\>

Le righe successive alla riga 3> GO costituiscono l'output di un'istruzione SELECT .The lines after line 3> GO are the output of a SELECT statement. Dopo la generazione dell'output, sqlcmd reimposta il prompt di sqlcmd e visualizza 1>.After you generate output, sqlcmd resets the sqlcmd prompt and displays 1>. Dopo aver immesso EXIT nella riga 1>, nella finestra del prompt dei comandi viene visualizzata la stessa riga presente alla prima apertura di tale finestra.After entering EXIT at line 1>, the Command Prompt window displays the same line it did when you first opened it. Ciò indica che la sessione di sqlcmd è terminata.This indicates that sqlcmd has exited its session. È ora possibile chiudere la finestra del prompt dei comandi digitando un altro comando EXIT .You can now close the Command Prompt window by typing another EXIT command.

Esecuzione di file script Transact-SQL usando sqlcmdRunning Transact-SQL script files using sqlcmd

È possibile usare sqlcmd per eseguire file script del database.You can use sqlcmd to execute database script files. I file script sono file di testo che contengono una combinazione di istruzioni Transact-SQLTransact-SQL , comandi sqlcmd e variabili di scripting.Script files are text files that contain a mix of Transact-SQLTransact-SQL statements, sqlcmd commands, and scripting variables. Per altre informazioni sullo scripting di variabili, vedere Utilizzo di sqlcmd con variabili di scripting.For more information about how to script variables, see Use sqlcmd with Scripting Variables. Il funzionamento disqlcmd con le istruzioni, i comandi e le variabili di scripting presenti in un file script è analogo al funzionamento con le istruzioni e i comandi immessi in modo interattivo.sqlcmd works with the statements, commands, and scripting variables in a script file in a manner similar to how it works with statements and commands that are entered interactively. La principale differenza sta nel fatto che sqlcmd legge il file di input senza pause anziché attendere l'immissione di istruzioni, comandi e variabili di scripting da parte dell'utente.The main difference is that sqlcmd reads through the input file without pause instead of waiting for a user to enter the statements, commands, and scripting variables.

I file script di database possono essere creati nei modi seguenti:There are different ways to create database script files:

  • È possibile compilare ed eseguire il debug di un set di istruzioni Transact-SQLTransact-SQL in modo interattivo in SQL Server Management StudioSQL Server Management Studioe quindi salvare il contenuto della finestra Query come file script.You can interactively build and debug a set of Transact-SQLTransact-SQL statements in SQL Server Management StudioSQL Server Management Studio, and then save the contents of the Query window as a script file.

  • È possibile creare un file di testo contenente istruzioni Transact-SQLTransact-SQL utilizzando un editor di testo, ad esempio Blocco note.You can create a text file that contains Transact-SQLTransact-SQL statements by using a text editor, such as Notepad.

EsempiExamples

A.A. Esecuzione di uno script utilizzando sqlcmdRunning a script by using sqlcmd

Avviare Blocco note e digitare le istruzioni Transact-SQLTransact-SQL seguenti:Start Notepad, and type the following Transact-SQLTransact-SQL statements:

USE AdventureWorks2012;

GO

SELECT TOP (3) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

Creare una cartella denominata MyFolder e quindi salvare lo script come file MyScript.sql nella cartella C:\MyFolder.Create a folder named MyFolder and then save the script as the file MyScript.sql in the folder C:\MyFolder. Al prompt dei comandi immettere quanto segue per eseguire lo script e inserire l'output nel file MyOutput.txt della cartella MyFolder:Enter the following at the command prompt to run the script and put the output in MyOutput.txt in MyFolder:

sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt

Il contenuto di MyOutput.txt visualizzato in Blocco note sarà il seguente:When you view the contents of MyOutput.txt in Notepad, you will see the following:

Changed database context to 'AdventureWorks2012'.

BusinessEntityID FirstName LastName

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

1 Syed Abbas

2 Catherine Abel

3 Kim Abercrombie

(3 rows affected)

B.B. Utilizzo di sqlcmd con una connessione amministrativa dedicataUsing sqlcmd with a dedicated administrative connection

Nell'esempio seguente sqlcmd viene utilizzato per connettersi a un server in cui si è verificato un problema di blocco utilizzando la connessione amministrativa dedicata (DAC, Dedicated Administration Connection).In the following example, sqlcmd is used to connect to a server that has a blocking problem by using the dedicated administrator connection (DAC).

C:\>sqlcmd -S ServerName -A

1> SELECT blocked FROM sys.dm_exec_requests WHERE blocked <> 0;

2> GO

Set di risultati:Here is the result set.

spid blocked

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

62 64

(1 rows affected)

Utilizzare sqlcmd per terminare il processo di blocco.Use sqlcmd to end the blocking process.

1> KILL 64;

2> GO

C.C. Utilizzo di sqlcmd per eseguire una stored procedureUsing sqlcmd to execute a stored procedure

Nell'esempio seguente viene illustrata la modalità di esecuzione di una stored procedure mediante sqlcmd.The following example shows how to execute a stored procedure by using sqlcmd. Creare la stored procedure seguente.Create the following stored procedure.

USE AdventureWorks2012;

IF OBJECT_ID ( ' dbo.ContactEmailAddress, 'P' ) IS NOT NULL

DROP PROCEDURE dbo.ContactEmailAddress;

GO

CREATE PROCEDURE dbo.ContactEmailAddress

(

@FirstName nvarchar(50)

,@LastName nvarchar(50)

)

AS

SET NOCOUNT ON

SELECT EmailAddress

FROM Person.Person

WHERE FirstName = @FirstName

AND LastName = @LastName;

SET NOCOUNT OFF

Al prompt di sqlcmd digitare il comando seguente:At the sqlcmd prompt, enter the following:

C:\sqlcmd

1> :Setvar FirstName Gustavo

1> :Setvar LastName Achong

1> EXEC dbo.ContactEmailAddress $(Gustavo),$(Achong)

2> GO

EmailAddress

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

gustavo0@adventure-works.com

D.D. Utilizzo di sqlcmd per la manutenzione del databaseUsing sqlcmd for database maintenance

Nell'esempio seguente viene illustrato l'utilizzo di sqlcmd per un'attività di manutenzione del database.The following example shows how to use sqlcmd for a database maintenance task. Creare C:\BackupTemplate.sql con il codice seguente.Create C:\BackupTemplate.sql with the following code.

USE master;

BACKUP DATABASE [$(db)] TO DISK='$(bakfile)';

Al prompt di sqlcmd digitare il comando seguente:At the sqlcmd prompt, enter the following:

C:\ >sqlcmd

1> :connect <server>

Sqlcmd: Successfully connected to server <server>.

1> :setvar db msdb

1> :setvar bakfile c:\msdb.bak

1> :r c:\BackupTemplate.sql

2> GO

Changed database context to 'master'.

Processed 688 pages for database 'msdb', file 'MSDBData' on file 2.

Processed 5 pages for database 'msdb', file 'MSDBLog' on file 2.

BACKUP DATABASE successfully processed 693 pages in 0.725 seconds (7.830 MB/sec)

E.E. Utilizzo di sqlcmd per eseguire codice su più istanzeUsing sqlcmd to execute code on multiple instances

Il codice seguente in un file rappresenta un esempio di script che si connette a due istanze.The following code in a file shows a script that connects to two instances. Si noti il comando GO prima della connessione alla seconda istanza.Notice the GO before the connection to the second instance.

:CONNECT <server>\,<instance1>

EXEC dbo.SomeProcedure

GO

:CONNECT <server>\,<instance2>

EXEC dbo.SomeProcedure

GO

E.E. Restituzione di output XMLReturning XML output

Nell'esempio seguente viene illustrato come l'output XML venga restituito non formattato in un flusso continuo.The following example shows how XML output is returned unformatted, in a continuous stream.

C:\>sqlcmd -d AdventureWorks2012

1> :XML ON

1> SELECT TOP 3 FirstName + ' ' + LastName + ', '

2> FROM Person.Person

3> GO

Syed Abbas, Catherine Abel, Kim Abercrombie,

F.F. Utilizzo di sqlcmd in un file script di WindowsUsing sqlcmd in a Windows script file

Un comando di sqlcmdcome sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, può essere eseguito in un file con estensione bat insieme a VBScript.A sqlcmdcommand such as sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, can be executed in a .bat file together with VBScript. In questo caso, non utilizzare opzioni interattive.In this case, do not use interactive options. sqlcmd deve essere installato nel computer che esegue il file con estensione bat.sqlcmd must be installed on the computer that is executing the .bat file.

Creare innanzitutto i quattro file seguenti:First, create the following four files:

  • C:\badscript.sqlC:\badscript.sql

    SELECT batch_1_this_is_an_error  
    GO  
    SELECT 'batch #2'  
    GO  
    
  • C:\goodscript.sqlC:\goodscript.sql

    SELECT 'batch #1'  
    GO  
    SELECT 'batch #2'  
    GO  
    
  • C:\returnvalue.sqlC:\returnvalue.sql

    :exit(select 100)  
    @echo off  
    C:\windowsscript.bat  
    @echo off  
    
    echo Running badscript.sql  
    sqlcmd -i badscript.sql -b -o out.log  
    if not errorlevel 1 goto next1  
    echo == An error occurred   
    
    :next1  
    
    echo Running goodscript.sql  
    sqlcmd -i goodscript.sql -b -o out.log  
    if not errorlevel 1 goto next2  
    echo == An error occurred   
    
    :next2  
    echo Running returnvalue.sql  
    sqlcmd -i returnvalue.sql -o out.log  
    echo SQLCMD returned %errorlevel% to the command shell  
    
    :exit  
    
  • C:\windowsscript.batC:\windowsscript.bat

    @echo off  
    
    echo Running badscript.sql  
    sqlcmd -i badscript.sql -b -o out.log  
    if not errorlevel 1 goto next1  
    echo == An error occurred   
    
    :next1  
    
    echo Running goodscript.sql  
    sqlcmd -i goodscript.sql -b -o out.log  
    if not errorlevel 1 goto next2  
    echo == An error occurred   
    
    :next2  
    echo Running returnvalue.sql  
    sqlcmd -i returnvalue.sql -o out.log  
    echo SQLCMD returned %errorlevel% to the command shell  
    
    :exit  
    

    Quindi, al prompt dei comandi eseguire C:\windowsscript.bat:Then, at the command prompt, run C:\windowsscript.bat:

    C:\>windowsscript.bat

    Running badscript.sql

    == An error occurred

    Running goodscript.sql

    Running returnvalue.sql

    SQLCMD returned 100 to the command shell

G.G. Utilizzo di sqlcmd per impostare la crittografia in un database SQL di Windows AzureUsing sqlcmd to set encryption on Windows Azure SQL Database

È possibile eseguire un comando sqlcmdin una connessione ai dati Database SQLSQL Database per specificare la crittografia e l'attendibilità del certificato.A sqlcmdcan be executed on a connection to Database SQLSQL Database data on to specify encryption and certificate trust. Sono disponibili due opzioni di sqlcmd:Two sqlcmd``options are available:

  • L'opzione -N viene utilizzata dal client per richiedere una connessione crittografata.The -N switch is used by the client to request an encrypted connection. Equivale all'opzione ADO.net ENCRYPT = true.This option is equivalent to the ADO.net option ENCRYPT = true.

  • L'opzione –C viene utilizzata dal client per configurare l'attendibilità implicita del certificato del server senza necessità di convalida.The –C switch is used by the client to configure it to implicitly the trust server certificate and not validate it. Equivale all'opzione ADO.net TRUSTSERVERCERTIFICATE = true.This option is equivalent to the ADO.net option TRUSTSERVERCERTIFICATE = true.

    Il servizio Database SQLSQL Database non supporta tutte le opzioni SET disponibili in un'istanza di SQL Server.The Database SQLSQL Database service does not support all the SET options available on a SQL Server instance. Nelle opzioni seguenti viene generato un errore quando l'opzione SET corrispondente è impostata su ON o OFF:The following options throw an error when the corresponding SET option is set to ON or OFF:

  • SET ANSI_DEFAULTSSET ANSI_DEFAULTS

  • SET ANSI_NULLSSET ANSI_NULLS

  • SET REMOTE_PROC_TRANSACTIONSSET REMOTE_PROC_TRANSACTIONS

  • SET ANSI_NULL_DEFAULTSET ANSI_NULL_DEFAULT

    Le opzioni SET seguenti non generano eccezioni ma non possono essere utilizzate,The following SET options do not throw exceptions but cannot be used. in quanto deprecate:They are deprecated:

  • SET CONCAT_NULL_YIELDS_NULLSET CONCAT_NULL_YIELDS_NULL

  • SET ANSI_PADDINGSET ANSI_PADDING

  • SET QUERY_GOVERNOR_COST_LIMITSET QUERY_GOVERNOR_COST_LIMIT

SintassiSyntax

Gli esempi seguenti si riferiscono ai casi in cui le impostazioni del provider SQL ServerSQL Server Native Client includono: ForceProtocolEncryption = False, Trust Server Certificate = NoThe following examples refer to cases where SQL ServerSQL Server Native Client Provider settings include: ForceProtocolEncryption = False, Trust Server Certificate = No

Effettuare la connessione utilizzando le credenziali di Windows e la comunicazione crittografata:Connect using Windows credentials and encrypt communication:

SQLCMD –E –N  

Effettuare la connessione utilizzando le credenziali di Windows e un certificato server attendibile:Connect using Windows credentials and trust server certificate:

SQLCMD –E –C  

Effettuare la connessione utilizzando le credenziali di Windows, la comunicazione crittografata e un certificato server attendibile:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –N –C  

Gli esempi seguenti si riferiscono ai casi in cui le impostazioni del provider SQL ServerSQL Server Native Client includono: ForceProtocolEncryption = True, TrustServerCertificate = Yes.The following examples refer to cases where SQL ServerSQL Server Native Client Provider settings include: ForceProtocolEncryption = True, TrustServerCertificate = Yes.

Effettuare la connessione utilizzando le credenziali di Windows, la comunicazione crittografata e un certificato server attendibile:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E  

Effettuare la connessione utilizzando le credenziali di Windows, la comunicazione crittografata e un certificato server attendibile:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –N  

Effettuare la connessione utilizzando le credenziali di Windows, la comunicazione crittografata e un certificato server attendibile:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –T  

Effettuare la connessione utilizzando le credenziali di Windows, la comunicazione crittografata e un certificato server attendibile:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –N –C  

Se il provider specifica ForceProtocolEncryption = True la crittografia è abilitata anche se nella stringa di connessione è impostato Encrypt=No .If the provider specifies ForceProtocolEncryption = True then encryption is enabled even if Encrypt=No in the connection string.

Altre informazioni su sqlcmdMore about sqlcmd

Utilità sqlcmd sqlcmd Utility
Utilizzo di sqlcmd con variabili di scripting Use sqlcmd with Scripting Variables
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