sqlcmd - 유틸리티 사용sqlcmd - Use the utility

sqlcmd 유틸리티는 Transact-SQLTransact-SQL 문 및 스크립트의 임시 대화형 실행과 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. sqlcmd 를 대화형으로 사용하거나 sqlcmd를 사용하여 실행할 스크립트 파일을 작성하려면 Transact-SQLTransact-SQL을 이해해야 합니다.To use sqlcmd interactively, or to build script files to be run using sqlcmd, users must understand Transact-SQLTransact-SQL. 일반적으로 sqlcmd 유틸리티는 다음과 같은 방법으로 사용됩니다.The sqlcmd utility is typically used in the following ways:

  • 사용자는 명령 프롬프트에서와 비슷한 방법으로 Transact-SQLTransact-SQL 문을 입력합니다.Users enter Transact-SQLTransact-SQL statements in a manner similar to working at the command prompt. 결과는 명령 프롬프트에 표시됩니다.The results are displayed at the command prompt. 명령 프롬프트 창을 열려면 Windows 검색 상자에 “cmd”를 입력하고 명령 프롬프트를 클릭하여 엽니다.To open a Command Prompt window, enter "cmd" in the Windows search box and click Command Prompt to open. 명령 프롬프트에서 sqlcmd 를 입력한 뒤 원하는 옵션을 입력합니다.At the command prompt, type sqlcmd followed by a list of options that you want. sqlcmd에서 지원하는 옵션의 전체 목록은 sqlcmd 유틸리티를 참조하세요.For a complete list of the options that are supported by sqlcmd, see sqlcmd Utility.

  • 실행할 단일 문을 지정하거나 실행할 문이 포함된 텍스트 파일을 유틸리티에 알려 Transact-SQLTransact-SQL sqlcmd Transact-SQLTransact-SQL 작업을 제출합니다.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. 출력은 일반적으로 텍스트 파일로 전송되지만 명령 프롬프트에 표시될 수도 있습니다.The output is usually directed to a text file, but can also be displayed at the command prompt.

  • 쿼리 편집기의 SQLCMD 모드 SQL Server Management StudioSQL Server Management StudioSQLCMD mode in SQL Server Management StudioSQL Server Management Studio Query Editor.

  • SMO(SQL Server 관리 개체)SQL Server Management Objects (SMO)

  • SQL Server 에이전트 CmdExec 작업SQL Server Agent CmdExec jobs.

일반적으로 사용되는 sqlcmd 옵션Typically used sqlcmd options

  • 서버 옵션(-S): sqlcmd가 연결하는 MicrosoftMicrosoft SQL ServerSQL Server의 인스턴스를 식별합니다.Server option (-S) identifies the instance of MicrosoftMicrosoft SQL ServerSQL Server to which sqlcmd connects.

  • 인증 옵션(-E, -U-P): sqlcmdSQL ServerSQL Server 인스턴스에 연결하기 위해 사용하는 자격 증명을 지정합니다.Authentication options (-E, -U, and -P) specify the credentials that sqlcmd uses to connect to the instance of SQL ServerSQL Server. 참고: -E 옵션은 기본값이므로 지정하지 않아도 됩니다.NOTE: The option -E is the default and does not need to be specified.

  • 입력 옵션(-Q, -q-i): sqlcmd에 입력될 내용의 위치를 식별합니다.Input options (-Q, -q, and -i) identify the location of the input to sqlcmd.

  • 출력 옵션(-o): sqlcmd가 출력 내용을 저장할 파일을 지정합니다.The output option (-o) specifies the file in which sqlcmd is to put its output.

sqlcmd 유틸리티에 연결Connect to the sqlcmd utility

  • Transact-SQLTransact-SQL 문을 대화형으로 실행하기 위해 Windows 인증을 사용하여 기본 인스턴스에 연결Connecting to a default instance by using Windows Authentication to interactively run Transact-SQLTransact-SQL statements:

    sqlcmd -S <ComputerName>  
    

    참고: 위 예에서 -E 는 기본값이므로 따로 지정하지 않았으며 sqlcmd 는 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.

  • Transact-SQLTransact-SQL 문을 대화형으로 실행하기 위해 Windows 인증을 사용하여 명명된 인스턴스에 연결Connecting to a named instance by using Windows Authentication to interactively run Transact-SQLTransact-SQL statements:

    sqlcmd -S <ComputerName>\<InstanceName>  
    

    또는or

    sqlcmd -S .\<InstanceName>  
    
  • Windows 인증을 사용하고 입력 및 출력 파일을 지정하여 명명된 인스턴스에 연결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>  
    
  • Windows 인증을 사용하여 로컬 컴퓨터의 기본 인스턴스에 연결하고 쿼리를 실행한 다음 쿼리 실행이 완료된 후에도 sqlcmd 가 실행되는 상태로 유지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"  
    
  • Windows 인증을 사용하여 로컬 컴퓨터의 기본 인스턴스에 연결하고 쿼리를 실행한 다음 출력을 파일로 전송하고 쿼리 실행이 완료되면 sqlcmd 종료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  
    
  • SQL ServerSQL Server 문을 대화형으로 실행하기 위해 Transact-SQLTransact-SQL 인증을 사용하여 명명된 인스턴스에 연결( 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>  
    

    힌트HINT!! sqlcmd 유틸리티에서 지원하는 옵션 목록을 보려면 sqlcmd -?를 실행하세요.To see a list of the options that are supported by the sqlcmd utility run: sqlcmd -?.

sqlcmd를 사용하여 대화형으로 Transact-SQL 문 실행Run Transact-SQL statements interactively by using sqlcmd

sqlcmd 유틸리티를 대화형으로 사용하여 명령 프롬프트 창에서 Transact-SQLTransact-SQL 문을 실행할 수 있습니다.You can use the sqlcmd utility interactively to execute Transact-SQLTransact-SQL statements in a Command Prompt window. Transact-SQLTransact-SQL sqlcmd 를 사용하여문을 대화형으로 실행하려면 입력 파일이나 쿼리를 지정하는 -Q, -q, -Z또는 -i 옵션을 사용하지 않고 유틸리티를 실행합니다.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. 예를 들어For example:

sqlcmd -S <ComputerName>\<InstanceName>

입력 파일이나 쿼리 없이 명령을 실행하면 sqlcmd 가 지정된 SQL ServerSQL Server 인스턴스에 연결하고 1> 과 그 뒤에 밑줄이 깜박이는 새 줄을 표시합니다. 이를 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. 1Transact-SQLTransact-SQL 문의 첫 번째 줄임을 의미하고 sqlcmd 프롬프트는 Transact-SQLTransact-SQL 문을 입력할 때 문이 시작되는 지점입니다.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.

sqlcmd 프롬프트에서는 Transact-SQLTransact-SQL GO , EXIT 등과 같이 문과 sqlcmd명령을 모두 입력할 수 있습니다.At the sqlcmd prompt, you can type both Transact-SQLTransact-SQL statements and sqlcmd commands, such as GO and EXIT. Transact-SQLTransact-SQL 문은 문 캐시를 호출한 버퍼에 저장됩니다.Each Transact-SQLTransact-SQL statement is put in a buffer called the statement cache. 이러한 문은 SQL ServerSQL Server 명령을 입력하고 Enter 키를 누르면 등과 같이 로 전송됩니다.These statements are sent to SQL ServerSQL Server after you type the GO command and press ENTER. sqlcmd를 종료하려면 새 줄의 시작 부분에 EXIT 또는 QUIT 를 입력합니다.To exit sqlcmd, type EXIT or QUIT at the start of a new line.

문 캐시를 지우려면 :RESET을 입력합니다.To clear the statement cache, type :RESET. ^C 을(를) 입력하면 sqlcmd 가 종료됩니다.Typing ^C causes sqlcmd to exit. ^CGO 명령을 실행한 후 문 캐시의 실행을 중지하는 데 사용할 수도 있습니다.^C can also be used to stop the execution of the statement cache after a GO command has been issued.

Transact-SQLTransact-SQL 문은 :ED 명령과 sqlcmd 프롬프트라고 합니다. statements that are entered in an interactive session can edited by entering the :ED command and the sqlcmd prompt. 그렇게 하면 편집기가 열리며 Transact-SQLTransact-SQL 문을 편집한 후 편집기를 닫으면 수정된 Transact-SQLTransact-SQL 문이 명령 창에 나타납니다.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. 문을 실행하려면 GO Transact-SQLTransact-SQL 를 입력합니다.Enter GO to run therevised Transact-SQLTransact-SQL statement.

따옴표 붙은 문자열Quoted strings

따옴표 두 개를 연속으로 입력하여 문자열 내에 따옴표를 삽입하는 예외적인 경우를 제외하고 따옴표로 묶인 문자는 추가적인 전처리 없이 사용됩니다.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 에서는 이러한 문자 시퀀스를 하나의 따옴표로 처리합니다. treats this character sequence as one quotation mark. 변환은 서버에서 발생합니다. 스크립팅 변수 역시 문자열 내에서는 단순한 문자로 처리됩니다.(However, the translation occurs in the server.) Scripting variables will not be expanded when they appear within a string.

예를 들어For example:

sqlcmd

PRINT "Length: 5"" 7'";

GO

결과 집합은 다음과 같습니다.Here is the result set.

Length: 5" 7'

여러 줄로 구성된 문자열Strings that span multiple lines

sqlcmd 는 스크립트에서 문자열을 여러 줄로 나누어 입력할 수 있도록 지원합니다.sqlcmd supports scripts that have strings that span multiple lines. 예를 들어 다음 SELECT 문은 여러 줄로 나누어져 있으나 GO를 입력한 후 Enter 키를 누르면 단일 문자열로 실행됩니다.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

대화형 sqlcmd 실행 예Interactive sqlcmd example

다음은 sqlcmd 를 대화형으로 실행할 때 나타나는 내용의 예입니다.This is an example of what you see when you run sqlcmd interactively.

명령 프롬프트 창을 열면 다음과 비슷한 줄 하나가 나타납니다.When you open a Command Prompt window, there is one line similar to:

C:\> _

이는 C:\ 폴더가 현재 폴더이며 파일 이름을 지정하면 Windows가 해당 폴더에서 파일을 찾을 것이라는 의미입니다.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.

sqlcmd 를 입력하여 로컬 컴퓨터의 기본 SQL ServerSQL Server 인스턴스에 연결하면 명령 프롬프트 창에 다음과 같은 내용이 나타납니다.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> _

이는 SQL ServerSQL Server 인스턴스에 연결되어 이제 sqlcmdTransact-SQLTransact-SQL 문과 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. 1> 다음의 깜박이는 밑줄은 입력하는 문과 명령이 표시될 위치를 나타내는 sqlcmd 프롬프트입니다.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. 이제 USE AdventureWorks2012 를 입력하고 Enter 키를 누릅니다. 그런 다음 GO 를 입력하고 Enter 키를 누릅니다.Now, type USE AdventureWorks2012 and press ENTER, and then type GO and press ENTER. 명령 프롬프트 창에 다음과 같은 내용이 나타납니다.The contents of the Command Prompt window will be:

sqlcmd

USE AdventureWorks2012;

GO

결과 집합은 다음과 같습니다.Here is the result set.

Changed database context to 'AdventureWorks2012'.

1> _

USE AdventureWorks2012 를 입력한 다음 Enter 키를 누르면 sqlcmd 가 새 줄을 시작합니다.Pressing ENTER after entering USE AdventureWorks2012 signaled sqlcmd to start a new line. GO, 를 입력한 다음 Enter 키를 누르면 sqlcmdUSE AdventureWorks2012 문을 SQL ServerSQL Server인스턴스로 보냅니다.Pressing ENTER, after you type GO, signaled sqlcmd to send the USE AdventureWorks2012 statement to the instance of SQL ServerSQL Server. sqlcmdUSE 문이 성공적으로 완료되었음을 나타내는 메시지를 반환하고 새 1> 프롬프트를 표시하여 새 문이나 명령을 입력하도록 합니다.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.

다음 예에서는 SELECT 문, GO 를 실행할 SELECTEXIT 를 종료할 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

결과 집합은 다음과 같습니다.Here is the result set.

BusinessEntityID FirstName LastName

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

1 Syed Abbas

2 Catherine Abel

3 Kim Abercrombie

(3 rows affected)

1> EXIT

C:\>

3> GO 줄 다음에 표시된 줄은 SELECT 문의 출력입니다.The lines after line 3> GO are the output of a SELECT statement. 출력이 생성된 후 sqlcmdsqlcmd 프롬프트를 다시 설정하고 1>을 표시합니다.After you generate output, sqlcmd resets the sqlcmd prompt and displays 1>. EXIT 줄에 1>를 입력하면 명령 프롬프트 창을 처음 열었을 때와 동일한 줄이 표시됩니다.After entering EXIT at line 1>, the Command Prompt window displays the same line it did when you first opened it. 이는 sqlcmd 가 해당 세션을 종료했음을 나타냅니다.This indicates that sqlcmd has exited its session. 이제 다시 EXIT 명령을 입력하여 명령 프롬프트 창을 닫을 수 있습니다.You can now close the Command Prompt window by typing another EXIT command.

sqlcmd를 사용하여 Transact-SQL 스크립트 파일 실행Running Transact-SQL script files using sqlcmd

sqlcmd 를 사용하여 데이터베이스 스크립트 파일을 실행할 수 있습니다.You can use sqlcmd to execute database script files. 스크립트 파일은 Transact-SQLTransact-SQL 문, sqlcmd 명령 및 스크립팅 변수를 포함하는 텍스트 파일입니다.Script files are text files that contain a mix of Transact-SQLTransact-SQL statements, sqlcmd commands, and scripting variables. 변수를 스크립팅하는 방법은 스크립팅 변수와 함께 sqlcmd 사용을 참조하세요.For more information about how to script variables, see Use sqlcmd with Scripting Variables. sqlcmd 는 대화형으로 입력된 문과 명령을 사용하는 방식과 유사한 방식으로 스크립트 파일의 문, 명령 및 스크립팅 변수를 사용합니다.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. 주된 차이점은 sqlcmd 가 사용자의 문, 명령 및 스크립팅 변수 입력 작업을 기다리지 않고 일시 중지 없이 입력 파일을 읽는다는 점입니다.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.

다음과 같이 데이터베이스 스크립트 파일을 만드는 다른 방법도 있습니다.There are different ways to create database script files:

  • Transact-SQLTransact-SQL 에서 SQL Server Management StudioSQL Server Management Studio문 집합을 대화형으로 작성하고 디버그한 다음 쿼리 창의 내용을 스크립트 파일로 저장할 수 있습니다.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.

  • 메모장과 같은 텍스트 편집기를 사용하여 Transact-SQLTransact-SQL 문을 포함하는 텍스트 파일을 만들 수 있습니다.You can create a text file that contains Transact-SQLTransact-SQL statements by using a text editor, such as Notepad.

Examples

1.A. sqlcmd를 사용하여 스크립트 실행Running a script by using sqlcmd

메모장을 시작하고 다음 Transact-SQLTransact-SQL 문을 입력합니다.Start Notepad, and type the following Transact-SQLTransact-SQL statements:

USE AdventureWorks2012;

GO

SELECT TOP (3) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

MyFolder 라는 폴더를 만든 다음 스크립트를 MyScript.sql 폴더에 C:\MyFolder파일로 저장합니다.Create a folder named MyFolder and then save the script as the file MyScript.sql in the folder C:\MyFolder. 명령 프롬프트에 다음을 입력하여 스크립트를 실행하고 출력을 MyOutput.txtMyFolder에 저장합니다.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

메모장에서 MyOutput.txt 의 내용을 보면 다음이 나타납니다.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)

2.B. 전용 관리 연결에 sqlcmd 사용Using sqlcmd with a dedicated administrative connection

다음 예에서 sqlcmd 는 DAC(관리자 전용 연결)를 사용하여 차단 문제가 발생한 서버에 연결하는 데 사용됩니다.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

결과 집합은 다음과 같습니다.Here is the result set.

spid blocked

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

62 64

(1 rows affected)

sqlcmd 를 사용하여 차단 프로세스를 끝냅니다.Use sqlcmd to end the blocking process.

1> KILL 64;

2> GO

3.C. sqlcmd를 사용하여 저장 프로시저 실행Using sqlcmd to execute a stored procedure

다음 예에서는 sqlcmd를 사용하여 저장 프로시저를 실행하는 방법을 보여 줍니다.The following example shows how to execute a stored procedure by using sqlcmd. 다음 저장 프로시저를 만듭니다.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

sqlcmd 프롬프트에서 다음을 입력합니다.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

4.D. 데이터베이스 유지 관리에 sqlcmd 사용Using sqlcmd for database maintenance

다음 예에서는 데이터베이스 유지 관리 태스크에 sqlcmd 를 사용하는 방법을 보여 줍니다.The following example shows how to use sqlcmd for a database maintenance task. 다음 코드로 C:\BackupTemplate.sql 을 만듭니다.Create C:\BackupTemplate.sql with the following code.

USE master;

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

sqlcmd 프롬프트에서 다음을 입력합니다.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)

5.E. sqlcmd를 사용하여 여러 인스턴스의 코드 실행Using sqlcmd to execute code on multiple instances

단일 파일에 있는 다음 코드는 두 개의 인스턴스에 연결하는 스크립트를 보여 줍니다.The following code in a file shows a script that connects to two instances. 두 번째 인스턴스에 대한 연결 전에 GO 가 있습니다.Notice the GO before the connection to the second instance.

:CONNECT <server>\,<instance1>

EXEC dbo.SomeProcedure

GO

:CONNECT <server>\,<instance2>

EXEC dbo.SomeProcedure

GO

5.E. XML 출력 반환Returning XML output

다음 예에서는 XML 출력이 서식이 지정되지 않은 연속 스트림으로 반환되는 방법을 보여 줍니다.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,

6.F. Windows 스크립트 파일에서 sqlcmd 사용Using sqlcmd in a Windows script file

sqlcmd명령(예: sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, )은 VBScript와 함께 .bat 파일에서 실행될 수 있습니다.A sqlcmdcommand such as sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, can be executed in a .bat file together with VBScript. 이 경우 대화형 옵션은 사용하지 마십시오.In this case, do not use interactive options. sqlcmd 는 .bat 파일을 실행하는 컴퓨터에 설치되어야 합니다.sqlcmd must be installed on the computer that is executing the .bat file.

첫 번째 단계로 다음과 같은 4개의 파일을 만듭니다.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  
    

    그런 다음 명령 프롬프트에서 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

7.G. sqlcmd를 사용하여 Windows Azure SQL 데이터베이스에 암호화 설정Using sqlcmd to set encryption on Windows Azure SQL Database

sqlcmdSQL 데이터베이스SQL Database 데이터에 대한 연결에서 암호화 및 인증서 신뢰를 지정하기 위해 실행할 수 있습니다.A sqlcmdcan be executed on a connection to SQL 데이터베이스SQL Database data on to specify encryption and certificate trust. 2가지 sqlcmd옵션을 사용할 수 있습니다.</span><span class="sxs-lookup"><span data-stu-id="47b5a-226">Two **sqlcmd**options are available:

  • -N 스위치는 클라이언트에서 암호화된 연결을 요청하는 데 사용됩니다.The -N switch is used by the client to request an encrypted connection. 이 옵션은 ADO.net 옵션 ENCRYPT = true와 동일합니다.This option is equivalent to the ADO.net option ENCRYPT = true.

  • –C 스위치는 클라이언트에서 유효성 검사 없이 암시적으로 서버 인증서를 신뢰하도록 구성하는 데 사용됩니다.The –C switch is used by the client to configure it to implicitly the trust server certificate and not validate it. 이 옵션은 ADO.net 옵션 TRUSTSERVERCERTIFICATE = true와 동일합니다.This option is equivalent to the ADO.net option TRUSTSERVERCERTIFICATE = true.

    SQL 데이터베이스SQL Database 서비스는 SQL Server 인스턴스에서 사용 가능한 SET 옵션 중 일부는 지원하지 않습니다.The SQL 데이터베이스SQL Database service does not support all the SET options available on a SQL Server instance. 다음 옵션은 해당하는 SET 옵션이 ON 또는 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

    다음 SET 옵션은 예외를 반환하지 않지만 사용할 수 없습니다.The following SET options do not throw exceptions but cannot be used. 이러한 옵션은 더 이상 사용되지 않습니다.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

구문Syntax

다음 예에서는 SQL ServerSQL Server Native Client 공급자 설정에 포함된 사례를 참조합니다. 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

Windows 자격 증명을 사용한 연결 및 통신 암호화:Connect using Windows credentials and encrypt communication:

SQLCMD –E –N  

Windows 자격 증명을 사용한 연결 및 서버 인증서 신뢰:Connect using Windows credentials and trust server certificate:

SQLCMD –E –C  

Windows 자격 증명을 사용한 연결, 통신 암호화 및 서버 인증서 신뢰:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –N –C  

다음 예에서는 SQL ServerSQL Server Native Client 공급자 설정에 포함된 사례를 참조합니다. ForceProtocolEncryption = True, TrustServerCertificate = YesThe following examples refer to cases where SQL ServerSQL Server Native Client Provider settings include: ForceProtocolEncryption = True, TrustServerCertificate = Yes.

Windows 자격 증명을 사용한 연결, 통신 암호화 및 서버 인증서 신뢰:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E  

Windows 자격 증명을 사용한 연결, 통신 암호화 및 서버 인증서 신뢰:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –N  

Windows 자격 증명을 사용한 연결, 통신 암호화 및 서버 인증서 신뢰:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –T  

Windows 자격 증명을 사용한 연결, 통신 암호화 및 서버 인증서 신뢰:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –N –C  

공급자가 ForceProtocolEncryption = True 를 지정하는 경우 연결 문자열에 Encrypt=No 가 있어도 암호화가 설정됩니다.If the provider specifies ForceProtocolEncryption = True then encryption is enabled even if Encrypt=No in the connection string.

sqlcmd에 대한 자세한 정보More about sqlcmd

sqlcmd 유틸리티 sqlcmd Utility
스크립팅 변수와 함께 sqlcmd 사용 Use sqlcmd with Scripting Variables
쿼리 편집기로 SQLCMD 스크립트 편집 Edit SQLCMD Scripts with Query Editor
작업 단계 관리 Manage Job Steps
CmdExec 작업 단계 만들기Create a CmdExec Job Step