sqlcmd Utilitysqlcmd Utility

이 항목은 다음에 적용됩니다.예SQL Server(2008부터 시작)예Azure SQL Database예Azure SQL Data Warehouse 예병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

SQL Server 2014 및 아래에 대 한 참조 sqlcmd 유틸리티합니다.For SQL Server 2014 and lower, see sqlcmd Utility.

sqlcmd 유틸리티를 사용 하면 TRANSACT-SQL 문, 시스템 프로시저 및 명령 프롬프트에서 스크립트 파일에 입력 쿼리 편집기 SQLCMD 모드, Windows 스크립트 파일 또는 SQL Server 에이전트 작업의 운영 체제 (Cmd.exe) 작업 단계에서입니다.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. 이 유틸리티는 ODBC를 사용 하 여 TRANSACT-SQL 일괄 처리 실행.This utility uses ODBC to execute Transact-SQL batches.

참고

sqlcmd 유틸리티의 가장 최신 버전은 다운로드 센터에서 웹 릴리스로 제공됩니다.The most recent versions of the sqlcmd utility is available as a web release from the Download Center. 상시 암호화를 지원 하기 위해 13.1 이상 버전이 필요 (-g) 및 Azure Active Directory 인증 (-G).You need version 13.1 or higher to support Always Encrypted (-g) and Azure Active Directory authentication (-G). (컴퓨터에 설치된 sqlcmd.exe 버전이 여러 개일 수 있습니다.(You may have several versions of sqlcmd.exe installed on your computer. 올바른 버전을 사용해야 합니다.Be sure you are using the correct version. 버전을 확인하려면 sqlcmd -?를 실행하세요.)To determine the version, execute sqlcmd -?.)

SSMS에서 sqlcmd 문을 실행하려면 위쪽 탐색 쿼리 메뉴 드롭다운에서 SQLCMD 모드를 선택합니다.To run sqlcmd statements in SSMS, select SQLCMD Mode from the top navigation Query Menu dropdown.

중요

SQL Server Management StudioSQL Server Management Studio(SSMS)에서는 Microsoft .NET Framework.NET Framework 실행에서 일반 및 SQLCMD 모드에 대 한 SqlClient 쿼리 편집기합니다. (SSMS) uses the Microsoft .NET Framework.NET Framework SqlClient for execution in regular and SQLCMD mode in Query Editor. 명령줄에서 sqlcmd 를 실행할 경우 sqlcmd 는 ODBC 드라이버를 사용합니다.When sqlcmd is run from the command line, sqlcmd uses the ODBC driver. 서로 다른 기본 옵션이 적용될 수 있으므로 SQL Server Management StudioSQL Server Management Studio SQLCMD 모드 및 sqlcmd 유틸리티에서 동일한 쿼리를 실행할 때 다른 동작이 수행될 수 있습니다.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.

현재는 sqlcmd 를 실행할 때 명령줄 옵션과 값 사이에 공백을 넣을 필요가 없습니다.Currently, sqlcmd does not require a space between the command line option and the value. 하지만 후속 릴리스에서는 명령줄 옵션과 값 사이에 공백을 넣어야 할 수도 있습니다.However, in a future release, a space may be required between the command line option and the value.

다른 항목:Other topics:

구문Syntax

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)  

명령줄 옵션Command-line Options

로그인 관련 옵션Login-Related Options
-A-A
SQL server 관리자 전용된 연결 (DAC)로 로그입니다.Logs in to SQL Server with a Dedicated Administrator Connection (DAC). 이 연결 유형은 서버 문제를 해결하는 데 사용됩니다.This kind of connection is used to troubleshoot a server. 이 연결은 DAC를 지원하는 서버 컴퓨터에만 사용할 수 있습니다.This will only work with server computers that support DAC. DAC를 사용할 수 없는 경우 sqlcmd 는 오류 메시지를 생성하고 종료됩니다.If DAC is not available, sqlcmd generates an error message and then exits. DAC에 대한 자세한 내용은 데이터베이스 관리자를 위한 진단 연결을 참조하세요.For more information about DAC, see Diagnostic Connection for Database Administrators. -A 옵션-G 옵션과 함께 지원 되지 않습니다.The -A option is not supported with the -G option. -A를 사용 하 여 SQL 데이터베이스에 연결할 때 SQL server 관리자 여야 합니다.When connecting to SQL Database using -A, you must be a SQL server administrator. DAC는 Azure Active Directory 관리자에 대 한 사용할 수 없습니다.The DAC is not availble for an Azure Active Directory adminstrator.

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

-d db_name-d db_name
sqlcmd를 시작할 때 USE db_name 문을 실행합니다.Issues a USE db_name statement when you start sqlcmd. 이 옵션은 sqlcmd 스크립팅 변수 SQLCMDDBNAME을 설정합니다.This option sets the sqlcmd scripting variable SQLCMDDBNAME. 이 변수는 초기 데이터베이스를 지정합니다.This specifies the initial database. 기본값은 사용자 로그인의 기본 데이터베이스 속성입니다.The default is your login's default-database property. 데이터베이스가 없을 경우 오류 메시지가 생성되고 sqlcmd 가 종료됩니다.If the database does not exist, an error message is generated and sqlcmd exits.

-l login_timeout-l login_timeout
서버에 연결을 시도할 때 ODBC 드라이버에 대한 sqlcmd 로그인 시간 제한(초)을 지정합니다.Specifies the number of seconds before a sqlcmd login to the ODBC driver times out when you try to connect to a server. 이 옵션은 sqlcmd 스크립팅 변수 SQLCMDLOGINTIMEOUT을 설정합니다.This option sets the sqlcmd scripting variable SQLCMDLOGINTIMEOUT. 기본 sqlcmd 로그인 제한 시간은 8초입니다.The default time-out for login to sqlcmd is eight seconds. -G 옵션을 사용하여 SQL 데이터베이스 또는 SQL 데이터 웨어하우스에 연결하고 Azure Active Directory를 사용하여 인증하는 경우 최소 30초의 시간 제한 값이 권장됩니다.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. 로그인 제한 시간은 0에서 65534 사이의 숫자여야 합니다.The login time-out must be a number between 0 and 65534. 입력한 값이 숫자가 아니거나 이 범위에 속하지 않을 경우 sqlcmd 는 오류 메시지를 생성합니다.If the value supplied is not numeric or does not fall into that range, sqlcmd generates an error message. 값을 0으로 설정하면 제한 시간이 없습니다.A value of 0 specifies time-out to be infinite.

-E-E
SQL Server에 로그온 할 때 사용자 이름 및 암호를 사용 하는 대신 트러스트 된 연결을 사용 합니다.Uses a trusted connection instead of using a user name and password to log on to SQL Server . -E 를 지정하지 않으면 sqlcmd 는 기본적으로 트러스트된 연결 옵션을 사용합니다.By default, without -E specified, sqlcmd uses the trusted connection option.

-E 옵션은 SQLCMDPASSWORD 등의 가능한 사용자 이름 및 암호 환경 변수 설정을 무시합니다.The -E option ignores possible user name and password environment variable settings such as SQLCMDPASSWORD. -E 옵션과 함께 -U 옵션 또는 -P 옵션을 사용하면 오류 메시지가 생성됩니다.If the -E option is used together with the -U option or the -P option, an error message is generated.

-g-g
열 암호화 설정을 Enabled로 설정합니다.Sets the Column Encryption Setting to Enabled. 자세한 내용은 Always Encrypted를 참조하세요.For more information, see Always Encrypted. Windows 인증서 저장소에 저장된 마스터 키만 지원됩니다.Only master keys stored in Windows Certificate Store are supported. -g 스위치를 사용하려면 적어도 sqlcmd 버전 13.1이 필요합니다.The -g switch requires at least sqlcmd version 13.1. 사용 중인 버전을 확인하려면 sqlcmd -?를 실행하세요.To determine your version, execute sqlcmd -?.

-G-G
이 스위치는 Azure Active Directory 인증을 사용하여 사용자를 인증하도록 지정하기 위해 SQL 데이터 웨어하우스 또는 SQL 데이터베이스에 연결할 때 클라이언트에서 사용됩니다.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. 이 옵션은 sqlcmd 스크립팅 변수 SQLCMDUSEAAD = true를 설정합니다.This option sets the sqlcmd scripting variable SQLCMDUSEAAD = true. -G 스위치를 사용하려면 적어도 sqlcmd 버전 13.1이 필요합니다.The -G switch requires at least sqlcmd version 13.1. 사용 중인 버전을 확인하려면 sqlcmd -?를 실행하세요.To determine your version, execute sqlcmd -?. 자세한 내용은 Azure Active Directory 인증을 사용하여 SQL Database 및 SQL Data Warehouse에 연결을 참조하세요.For more information, see Connecting to SQL Database or SQL Data Warehouse By Using Azure Active Directory Authentication. -A 옵션-G 옵션과 함께 지원 되지 않습니다.The -A option is not supported with the -G option.

중요

-G 옵션은 Azure SQL 데이터베이스 및 Azure 데이터 웨어하우스에만 적용됩니다.The -G option only applies to Azure SQL Database and Azure Data Warehouse.

  • Azure Active Directory 사용자 이름 및 암호:Azure Active Directory Username and Password:

    Azure Active Directory의 사용자 이름과 암호를 사용하려는 경우 -G 옵션을 제공하고 -U-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 
    

    그러면 백 엔드에서 다음 연결 문자열이 생성됩니다.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 
    
  • Azure Active Directory 통합Azure Active Directory Integrated

    Azure Active Directory 통합 인증을 위해 사용자 이름이나 암호없이 -G 옵션을 제공합니다.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
    

    그러면 백 엔드에서 다음 연결 문자열이 생성됩니다.This will generate the following connection string in the backend:

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

    -E 옵션(Trusted_Connection)은 -G 옵션과 함께 사용할 수 없습니다.The -E option (Trusted_Connection) cannot be used along with the -G option).

-H workstation_name-H workstation_name
워크스테이션 이름입니다.A workstation name. 이 옵션은 sqlcmd 스크립팅 변수 SQLCMDWORKSTATION을 설정합니다.This option sets the sqlcmd scripting variable SQLCMDWORKSTATION. 워크스테이션 이름은 sys.sysprocesses 카탈로그 뷰의 hostname 열에 나열되거나 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. 이 옵션을 지정하지 않으면 기본적으로 현재 컴퓨터 이름이 사용됩니다.If this option is not specified, the default is the current computer name. 이 이름을 사용하여 다른 sqlcmd 세션을 식별할 수 있습니다This name can be used to identify different sqlcmd sessions.

-j 화면에 원시 오류 메시지를 출력합니다.-j Prints raw error messages to the screen.

-K application_intent-K application_intent
서버에 연결할 때 응용 프로그램 작업 유형을 선언합니다.Declares the application workload type when connecting to a server. 현재 ReadOnly값만 지원됩니다.The only currently supported value is ReadOnly. -K 를 지정하지 않으면 sqlcmd 유틸리티가 Always On 가용성 그룹에 있는 보조 복제본에 연결할 수 없습니다.If -K is not specified, the sqlcmd utility will not support connectivity to a secondary replica in an Always On availability group. 자세한 내용은 활성 보조: 읽기 가능한 보조 복제본(Always On 가용성 그룹)을 참조하세요.For more information, see Active Secondaries: Readable Secondary Replica (Always On Availability Groups)

-M multisubnet_failover-M multisubnet_failover
항상 지정 -M SQL Server 장애 조치 클러스터 인스턴스 또는 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. -M 은 현재 활성 상태인 서버를 빠르게 검색하여 연결할 수 있도록 제공합니다.-M provides for faster detection of and connection to the (currently) active server. –M 이 지정되지 않으면 -M 이 해제되어 있습니다.If –M is not specified, -M is off. 에 대 한 자세한 내용은 [! 포함ssHADR, 만들기 및 구성의 가용성 그룹 ( SQL Server ) , [장애 조치 클러스터링 및 Always On 가용성 그룹 (SQL Server)] (https://msdn.microsoft.comlibrary/ff929171.aspx, 및 [활성 보조: 읽기 가능한 보조 복제본 (Always On 가용성 그룹)](https://msdn.microsoft.com/library/ff878253.aspx.For more information about [!INCLUDEssHADR, 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
이 스위치는 클라이언트에서 암호화된 연결을 요청하는 데 사용됩니다.This switch is used by the client to request an encrypted connection.

-P password-P password
사용자가 지정하는 암호입니다.Is a user-specified password. 암호는 대/소문자를 구분합니다.Passwords are case sensitive. -U 옵션을 사용하고 -P 옵션을 사용하지 않으며 SQLCMDPASSWORD 환경 변수를 설정하지 않을 경우 sqlcmd 는 암호를 묻는 메시지를 표시합니다.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. null 암호를 지정하려면(권장하지 않음) -P ""를 사용합니다.To specify a null password (not recommended) use -P "". 그리고 항상 다음을 기억하세요.And remember to always:

강력한 암호를 사용하세요.Use a strong password!!

암호 프롬프트는 다음과 같이 콘솔에 출력되어 표시됩니다. Password:The password prompt is displayed by printing the password prompt to the console, as follows: Password:

사용자 입력은 숨겨지므로User input is hidden. 아무 것도 표시되지 않고 커서가 해당 위치에 그대로 남아 있습니다.This means that nothing is displayed and the cursor stays in position.

SQLCMDPASSWORD 환경 변수를 사용하면 현재 세션에 대한 기본 암호를 설정할 수 있습니다.The SQLCMDPASSWORD environment variable lets you set a default password for the current session. 그러므로 암호를 배치 파일로 하드 코딩할 필요가 없습니다.Therefore, passwords do not have to be hard-coded into batch files.

다음 예에서는 먼저 명령 프롬프트에서 SQLCMDPASSWORD 변수를 설정하고 sqlcmd 유틸리티에 액세스합니다.The following example first sets the SQLCMDPASSWORD variable at the command prompt and then accesses the sqlcmd utility. 명령 프롬프트에서 다음을 입력합니다.At the command prompt, type:

SET SQLCMDPASSWORD= p@a$$w0rd
명령 프롬프트에서 다음을 입력합니다.At the following command prompt, type:

sqlcmd

사용자 이름 및 암호 조합이 잘못된 경우 오류 메시지가 생성됩니다.If the user name and password combination is incorrect, an error message is generated.

참고!NOTE! OSQLPASSWORD 환경 변수는 이전 버전과의 호환성을 위해 유지되었습니다.The OSQLPASSWORD environment variable was kept for backward compatibility. SQLCMDPASSWORD 환경 변수는 OSQLPASSWORD 환경 변수보다 우선 적용됩니다. 따라서 sqlcmdosql 을 문제 없이 함께 사용할 수 있으며 이전 스크립트를 계속 사용할 수 있습니다.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.

-P 옵션과 함께 -E 옵션을 사용하면 오류 메시지가 생성됩니다.If the -P option is used with the -E option, an error message is generated.

-P 옵션 다음에 둘 이상의 인수를 지정하면 오류 메시지가 생성되고 프로그램이 종료됩니다.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]
연결할 SQL Server의 인스턴스를 지정 합니다.Specifies the instance of SQL Server to which to connect. sqlcmd 스크립팅 변수 SQLCMDSERVER를 설정합니다.It sets the sqlcmd scripting variable SQLCMDSERVER.

지정 server_name 해당 서버 컴퓨터에서 SQL Server의 기본 인스턴스에 연결할 수 있습니다.Specify server_name to connect to the default instance of SQL Server on that server computer. 지정 server_name [ ** \ ** instance_name ] 해당 서버 컴퓨터에서 SQL Server의 명명 된 인스턴스에 연결 합니다.Specify server_name [ \instance_name ] to connect to a named instance of SQL Server on that server computer. 지정 된 서버 컴퓨터가 경우 sqlcmd 로컬 컴퓨터에서 SQL Server의 기본 인스턴스에 연결 합니다.If no server computer is specified, sqlcmd connects to the default instance of SQL Server on the local computer. 네트워크의 원격 컴퓨터에서 sqlcmd 를 실행할 경우에는 이 옵션을 지정해야 합니다.This option is required when you execute sqlcmd from a remote computer on the network.

protocoltcp (TCP/IP), lpc (공유 메모리) 또는 np (명명된 파이프)일 수 있습니다.protocol can be tcp (TCP/IP), lpc (shared memory), or np (named pipes).

지정 하지 않는 경우는 server_name [ ** \ ** instance_name ] 시작할 때 sqlcmd, SQL Server에 대 한 확인 하 고 기본적으로 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.

참고

OSQLSERVER 환경 변수는 이전 버전과의 호환성을 위해 유지되었습니다.The OSQLSERVER environment variable has been kept for backward compatibility. SQLCMDSERVER 환경 변수는 OSQLSERVER 환경 변수보다 우선 적용됩니다. 따라서 sqlcmdosql 을 문제 없이 함께 사용할 수 있으며 이전 스크립트를 계속 사용할 수 있습니다.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
로그인 이름 또는 포함된 데이터베이스 사용자 이름입니다.Is the login name or contained database user name. 포함된 데이터베이스 사용자의 경우 데이터베이스 이름 옵션 (-d)를 제공해야 합니다.For contained database users you must provide the database name option (-d).

참고

OSQLUSER 환경 변수는 이전 버전과의 호환성을 위해 제공됩니다.The OSQLUSER environment variable is available for backward compatibility. SQLCMDUSER 환경 변수는 OSQLUSER 환경 변수보다 우선적으로 적용됩니다.The SQLCMDUSER environment variable takes precedence over the OSQLUSER environment variable. 따라서 sqlcmdosql 을 문제 없이 함께 사용할 수 있으며This means that sqlcmd and osql can be used next to each other without interference. 이전 osql 스크립트도 계속 사용할 수 있습니다.It also means that existing osql scripts will continue to work.

모두는 -U 옵션 및 -P 옵션을 지정 sqlcmd Microsoft Windows 인증 모드를 사용 하 여 연결을 시도 합니다.If neither the -U option nor the -P option is specified, sqlcmd tries to connect by using Microsoft Windows Authentication mode. sqlcmd를 실행하는 사용자의 Windows 계정을 기반으로 인증이 수행됩니다.Authentication is based on the Windows account of the user who is running sqlcmd.

이 항목의 뒷부분에 설명되어 있는 -E 옵션과 함께 -U 옵션을 사용하면 오류 메시지가 생성됩니다.If the -U option is used with the -E option (described later in this topic), an error message is generated. –U 옵션 다음에 둘 이상의 인수를 지정하면 오류 메시지가 생성되고 프로그램이 종료됩니다.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
암호를 변경합니다.Change password:

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

-Z new_password-Z new_password
암호 변경 후 종료합니다.Change password and exit:

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

입/출력 옵션Input/Output Options
-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
입력 및 출력 코드 페이지를 지정합니다.Specifies the input and output code pages. 코드 페이지 번호는 설치된 Windows 코드 페이지를 지정하는 숫자 값입니다.The codepage number is a numeric value that specifies an installed Windows code page.

코드 페이지 변환 규칙은 다음과 같습니다.Code-page conversion rules:

  • 변환이 필요 없는 유니코드 파일이 입력 파일로 사용된 경우가 아니라면 sqlcmd 는 지정된 코드 페이지가 없는 경우 입력 파일과 출력 파일에 현재 코드 페이지를 사용합니다.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 는 Big-Endian 및 Little-Endian 유니코드 입력 파일을 모두 자동으로 인식합니다.sqlcmd automatically recognizes both big-endian and little-endian Unicode input files. -u 옵션이 지정된 경우 출력은 항상 Little-Endian 유니코드가 됩니다.If the -u option has been specified, the output will always be little-endian Unicode.

  • 지정된 출력 파일이 없는 경우 출력 코드 페이지는 콘솔 코드 페이지가 됩니다.If no output file is specified, the output code page will be the console code page. 이 경우 출력이 콘솔에 올바르게 표시됩니다.This enables the output to be displayed correctly on the console.

  • 여러 입력 파일이 있는 경우 동일한 코드 페이지를 사용하는 것으로 간주됩니다.Multiple input files are assumed to be of the same code page. 유니코드 및 비유니코드 입력 파일을 함께 사용할 수 있습니다.Unicode and non-Unicode input files can be mixed.

    명령 프롬프트에서 chcp 를 입력하여 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...]
    SQL 문 또는 저장 프로시저의 일괄 처리가 포함된 파일을 나타냅니다.Identifies the file that contains a batch of SQL statements or stored procedures. 순서대로 읽고 처리할 파일을 여러 개 지정할 수 있습니다.Multiple files may be specified that will be read and processed in order. 파일 이름 사이에 공백을 넣지 마십시오.Do not use any spaces between file names. 먼저sqlcmd 는 지정한 모든 파일이 있는지 확인합니다.sqlcmd will first check to see whether all the specified files exist. 하나 이상의 파일이 없을 경우 sqlcmd 가 종료됩니다.If one or more files do not exist, sqlcmd will exit. -i 옵션과 -Q/-q 옵션은 함께 사용할 수 없습니다.The -i and the -Q/-q options are mutually exclusive.

    경로 예는 다음과 같습니다.Path examples:

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

공백이 포함된 파일 경로는 따옴표로 묶어야 합니다.File paths that contain spaces must be enclosed in quotation marks.

이 옵션은 두 번 이상 사용할 수 있습니다. -iinput_file -II input_file.This option may be used more than once: -iinput_file -II input_file.

-o output_file-o output_file
sqlcmd에서 출력을 받는 파일을 식별합니다.Identifies the file that receives output from sqlcmd.

-u 를 지정하면 output_file 이 유니코드 형식으로 저장됩니다.If -u is specified, the output_file is stored in Unicode format. 파일 이름이 잘못된 경우 오류 메시지가 생성되고 sqlcmd 가 종료됩니다.If the file name is not valid, an error message is generated, and sqlcmd exits. sqlcmd 는 여러 sqlcmd 프로세스를 같은 파일에 동시에 쓸 수 없습니다.sqlcmd does not support concurrent writing of multiple sqlcmd processes to the same file. 이 경우 파일 출력이 손상되거나 제대로 수행되지 않습니다.The file output will be corrupted or incorrect. 파일 형식에 대한 자세한 내용은 -f 스위치를 참조하세요.See the -f switch for more information about file formats. 이 파일은 없는 경우 생성됩니다.This file will be created if it does not exist. 이전 sqlcmd 세션에서와 이름이 같은 파일은 덮어쓰여집니다.A file of the same name from a prior sqlcmd session will be overwritten. 여기에 지정된 파일은 stdout 파일이 아닙니다.The file specified here is not the stdout file. stdout 파일이 지정된 경우에는 이 파일이 사용되지 않습니다.If a stdout file is specified this file will not be used.

경로 예는 다음과 같습니다.Path examples:

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

공백이 포함된 파일 경로는 따옴표로 묶어야 합니다.File paths that contain spaces must be enclosed in quotation marks.

-r[0 | 1]-r[0 | 1]
오류 메시지 출력을 화면으로 리디렉션합니다(stderr).Redirects the error message output to the screen (stderr). 매개 변수를 지정하지 않거나 0을 지정하면 심각도가 11 이상인 오류 메시지만 리디렉션됩니다.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. 1을 지정하면 PRINT를 포함하는 모든 오류 메시지 출력이 리디렉션됩니다.If you specify 1, all error message output including PRINT is redirected. -o를 사용할 경우 아무 효과도 없습니다.Has no effect if you use -o. 기본적으로 메시지는 stdout으로 전송됩니다.By default, messages are sent to stdout.

-R-R
로 인해 sqlcmd 클라이언트의 로캘을 기반으로 SQL Server에서 검색 한 숫자, 통화, 날짜 및 시간 열 필드를 지역화 합니다.Causes sqlcmd to localize numeric, currency, date, and time columns retrieved from SQL Server based on the client’s locale. 기본적으로 이러한 열은 서버의 국가별 설정을 사용하여 표시됩니다.By default, these columns are displayed using the server’s regional settings.

-u-u
input_file 형식에 관계없이 output_file이 유니코드 형식으로 저장되도록 지정합니다.Specifies that output_file is stored in Unicode format, regardless of the format of input_file.

쿼리 실행 옵션Query Execution Options
-e-e
표준 출력 장치에 입력 스크립트를 기록합니다(stdout).Writes input scripts to the standard output device (stdout).

-I-I
SET QUOTED_IDENTIFIER 연결 옵션을 ON으로 설정합니다.Sets the SET QUOTED_IDENTIFIER connection option to ON. 기본적으로 OFF로 설정되어 있습니다.By default, it is set to OFF. 자세한 내용은 SET QUOTED_IDENTIFIER(Transact-SQL)를 참조하세요.For more information, see SET QUOTED_IDENTIFIER (Transact-SQL).

-q" cmdline query "-q" cmdline query "
sqlcmd 가 시작될 때 쿼리를 실행하지만 쿼리 실행이 완료되더라도 sqlcmd 가 종료되지는 않습니다.Executes a query when sqlcmd starts, but does not exit sqlcmd when the query has finished running. 세미콜론으로 구분된 여러 쿼리를 실행할 수 있습니다.Multiple-semicolon-delimited queries can be executed. 다음 예와 같이 쿼리를 따옴표로 묶습니다.Use quotation marks around the query, as shown in the following example.

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

중요

쿼리에 GO 종결자를 사용하지 마십시오.Do not use the GO terminator in the query.

이 옵션과 함께 -b 를 지정하면 오류가 발생하여 sqlcmd 가 종료됩니다.If -b is specified together with this option, sqlcmd exits on error. -b 에 대해서는 이 항목의 뒷부분에서 설명합니다.-b is described later in this topic.

-Q" cmdline query "-Q" cmdline query "
sqlcmd 가 시작될 때 쿼리를 실행한 다음 바로 sqlcmd를 종료합니다.Executes a query when sqlcmd starts and then immediately exits sqlcmd. 세미콜론으로 구분된 여러 쿼리를 실행할 수 있습니다.Multiple-semicolon-delimited queries can be executed.

다음 예와 같이 쿼리를 따옴표로 묶습니다.Use quotation marks around the query, as shown in the following example.

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

중요

쿼리에 GO 종결자를 사용하지 마십시오.Do not use the GO terminator in the query.

이 옵션과 함께 -b 를 지정하면 오류가 발생하여 sqlcmd 가 종료됩니다.If -b is specified together with this option, sqlcmd exits on error. -b 에 대해서는 이 항목의 뒷부분에서 설명합니다.-b is described later in this topic.

-t query_timeout-t query_timeout
명령 또는 SQL 문 제한 시간(초)을 지정합니다. 이 옵션은 sqlcmd 스크립팅 변수 SQLCMDSTATTIMEOUT을 설정합니다.Specifies the number of seconds before a command (or SQL statement) times out. This option sets the sqlcmd scripting variable SQLCMDSTATTIMEOUT. time_out 값을 지정하지 않으면 명령이 무기한 실행됩니다. querytime_out은 1에서 65534 사이의 숫자여야 합니다.If a time_out value is not specified, the command does not time out. The querytime_out must be a number between 1 and 65534. 입력한 값이 숫자가 아니거나 이 범위에 속하지 않을 경우 sqlcmd 는 오류 메시지를 생성합니다.If the value supplied is not numeric or does not fall into that range, sqlcmd generates an error message.

참고

실제 제한 시간 값은 지정한 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...]
sqlcmd스크립트에서 사용할 수 있는 sqlcmd 스크립팅 변수를 만듭니다.Creates a sqlcmdscripting variable that can be used in a sqlcmd script. 공백이 포함된 값은 따옴표로 묶습니다.Enclose the value in quotation marks if the value contains spaces. 여러 var="values" 값을 지정할 수 있습니다.You can specify multiple var="values" values. 지정한 값에 오류가 있을 경우 sqlcmd 는 오류 메시지를 생성하고 종료됩니다.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
sqlcmd 에서 스크립팅 변수를 무시하도록 합니다.Causes sqlcmd to ignore scripting variables. 이는 $(variable_name) 등의 일반 변수와 형식이 같은 문자열이 포함되어 있을 수 있는 INSERT 문이 스크립트에 많이 포함된 경우에 유용합니다.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).

형식 지정 옵션Formatting Options
-h headers-h headers
열 머리글 사이에 출력할 행의 수를 지정합니다.Specifies the number of rows to print between the column headings. 기본적으로 각 쿼리 결과 집합마다 머리글을 한 번 출력합니다.The default is to print headings one time for each set of query results. 이 옵션은 sqlcmd 스크립팅 변수 SQLCMDHEADERS를 설정합니다.This option sets the sqlcmd scripting variable SQLCMDHEADERS. 머리글을 출력하지 않으려면 -1 을 사용합니다.Use -1 to specify that headers must not be printed. 잘못된 값을 지정할 경우 sqlcmd 는 오류 메시지를 생성하고 종료됩니다.Any value that is not valid causes sqlcmd to generate an error message and then exit.

-k [1 | 2]-k [1 | 2]
출력에서 탭이나 줄 바꿈 문자와 같은 모든 제어 문자를 제거합니다.Removes all control characters, such as tabs and new line characters from the output. 데이터를 반환할 때 열 서식은 유지됩니다.This preserves column formatting when data is returned. 1을 지정하면 제어 문자가 단일 공백으로 바뀝니다.If 1 is specified, the control characters are replaced by a single space. 2를 지정하면 연속된 제어 문자가 단일 공백으로 바뀝니다.If 2 is specified, consecutive control characters are replaced by a single space. -k-k1과 같습니다.-k is the same as -k1.

-s col_separator-s col_separator
열 구분 기호 문자를 지정합니다.Specifies the column-separator character. 기본값은 공백입니다.The default is a blank space. 이 옵션은 sqlcmd 스크립팅 변수 SQLCMDCOLSEP를 설정합니다.This option sets the sqlcmd scripting variable SQLCMDCOLSEP. 앰퍼샌드(&)나 세미콜론(;)과 같이 운영 체제에서 특별한 의미를 갖는 문자를 사용하려면 해당 문자를 따옴표(")로 묶습니다.To use characters that have special meaning to the operating system such as the ampersand (&), or semicolon (;), enclose the character in quotation marks ("). 열 구분 기호로 임의의 8비트 문자를 사용할 수 있습니다.The column separator can be any 8-bit character.

-w column_width-w column_width
출력할 화면 너비를 지정합니다.Specifies the screen width for output. 이 옵션은 sqlcmd 스크립팅 변수 SQLCMDCOLWIDTH를 설정합니다.This option sets the sqlcmd scripting variable SQLCMDCOLWIDTH. 열 너비는 8보다 크고 65536보다 작은 숫자여야 합니다.The column width must be a number greater than 8 and less than 65536. 지정한 열 너비가 이 범위에 속하지 않을 경우 sqlcmd 는 오류 메시지를 생성합니다.If the specified column width does not fall into that range, sqlcmd generates and error message. 기본 너비는 80자입니다.The default width is 80 characters. 출력 줄이 지정한 열 너비를 초과하면 다음 줄로 넘어갑니다.When an output line exceeds the specified column width, it wraps on to the next line.

-W-W
이 옵션은 열에서 후행 공백을 제거합니다.This option removes trailing spaces from a column. 다른 응용 프로그램으로 내보낼 데이터를 준비하는 경우 -s 옵션과 함께 이 옵션을 사용합니다.Use this option together with the -s option when preparing data that is to be exported to another application. -y 또는 -Y 옵션과 함께 사용할 수 없습니다.Cannot be used with the -y or -Y options.

-y variable_length_type_display_width-y variable_length_type_display_width
sqlcmd 스크립팅 변수 SQLCMDMAXVARTYPEWIDTH를 설정합니다.Sets the sqlcmd scripting variable SQLCMDMAXVARTYPEWIDTH. 기본값은 256입니다.The default is 256. 다음과 같은 큰 가변 길이 데이터 형식에 대해 반환되는 문자 수를 제한합니다.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(사용자 정의 데이터 형식)UDT (user-defined data types)

  • texttext

  • ntextntext

  • imageimage

참고

UDT는 구현에 따라 길이가 고정될 수 있습니다.UDTs can be of fixed length depending on the implementation. 길이가 고정된 UDT의 길이가 display_width보다 짧으면 반환되는 UDT 값은 영향을 받지 않습니다.If this length of a fixed length UDT is shorter that display_width, the value of the UDT returned is not affected. 그러나 길이가 display_width보다 길면 출력이 잘립니다.However, if the length is longer than display_width, the output is truncated.

중요

-y 0 옵션은 반환되는 데이터 크기에 따라 서버와 네트워크 모두에서 심각한 성능 문제를 일으킬 수 있으므로 사용 시 매우 주의해야 합니다.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
sqlcmd 스크립팅 변수 SQLCMDMAXFIXEDTYPEWIDTH를 설정합니다.Sets the sqlcmd scripting variable SQLCMDMAXFIXEDTYPEWIDTH. 기본값은 0(무제한)입니다.The default is 0 (unlimited). 다음 데이터 형식에 대해 반환되는 문자 수를 제한합니다.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

    오류 보고 옵션Error Reporting Options
    -b-b
    오류가 발생하면 sqlcmd 가 종료되고 DOS ERRORLEVEL 값을 반환하도록 지정합니다.Specifies that sqlcmd exits and returns a DOS ERRORLEVEL value when an error occurs. DOS ERRORLEVEL 변수로 반환 되는 값은 1 SQL Server 오류 메시지의 심각도 수준이 10; 보다 큰 경우, 반환 값은 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. -b 외에도 -V옵션을 설정한 경우 심각도가 -V 를 사용하여 설정한 값보다 작으면 sqlcmd에서 오류를 보고하지 않습니다.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. 명령 프롬프트 배치 파일은 ERRORLEVEL 값을 테스트하고 그에 따라 적절히 오류를 처리할 수 있습니다.Command prompt batch files can test the value of ERRORLEVEL and handle the error appropriately. sqlcmd 는 심각도가 10(정보 메시지)인 오류는 보고하지 않습니다.sqlcmd does not report errors for severity level 10 (informational messages).

    sqlcmd 스크립트에 잘못된 설명 또는 구문 오류가 포함되었거나 스크립팅 변수가 없을 경우 반환되는 ERRORLEVEL은 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
    stdout에 보낼 오류 메시지를 제어합니다.Controls which error messages are sent to stdout. 심각도가 이 수준보다 크거나 같은 메시지는 보내집니다.Messages that have a severity level greater than or equal to this level are sent. 이 값을 1로 설정하면 정보 메시지를 포함한 모든 메시지가 보내집니다.When this value is set to -1, all messages including informational messages, are sent. -m-1사이에는 공백이 있으면 안 됩니다.Spaces are not allowed between the -m and -1. 예를 들어 -m-1 은 유효하고 -m-1 은 유효하지 않습니다.For example, -m-1 is valid, and -m-1 is not.

    이 옵션은 sqlcmd 스크립팅 변수 SQLCMDERRORLEVEL도 설정합니다.This option also sets the sqlcmd scripting variable SQLCMDERRORLEVEL. 이 변수의 기본값은 0입니다.This variable has a default of 0.

    -b error_severity_level-V error_severity_level
    ERRORLEVEL 변수를 설정하는 데 사용되는 심각도를 제어합니다.Controls the severity level that is used to set the ERRORLEVEL variable. 심각도가 이 값보다 크거나 같은 오류 메시지는 ERRORLEVEL을 설정합니다.Error messages that have severity levels greater than or equal to this value set ERRORLEVEL. 0보다 작은 값은 0으로 보고됩니다.Values that are less than 0 are reported as 0. 배치 파일 및 CMD 파일은 ERRORLEVEL 변수의 값을 테스트하는 데 사용할 수 있습니다.Batch and CMD files can be used to test the value of the ERRORLEVEL variable.

    기타 옵션Miscellaneous Options
    -a packet_size-a packet_size
    다른 크기의 패킷을 요청합니다.Requests a packet of a different size. 이 옵션은 sqlcmd 스크립팅 변수 SQLCMDPACKETSIZE를 설정합니다.This option sets the sqlcmd scripting variable SQLCMDPACKETSIZE. packet_size 는 512에서 32767 사이의 값이어야 합니다.packet_size must be a value between 512 and 32767. 기본값은 4096입니다.The default = 4096. GO 명령 사이에 SQL 문 수가 많은 스크립트를 실행할 때는 패킷 크기가 클수록 성능이 더 향상됩니다.A larger packet size can enhance performance for execution of scripts that have lots of SQL statements between GO commands. 더 큰 패킷 크기를 요청할 수 있습니다.You can request a larger packet size. 그러나 요청이 거부되면 sqlcmd 는 서버 기본값을 패킷 크기로 사용합니다.However, if the request is denied, sqlcmd uses the server default for packet size.

    -c batch_terminator-c batch_terminator
    일괄 처리 종결자를 지정합니다.Specifies the batch terminator. 기본적으로 명령은 종료 되 고 SQL Server로 전송 "go"를 입력 하 여 한 줄에 단독으로 합니다.By default, commands are terminated and sent to SQL Server by typing the word "GO" on a line by itself. 일괄 처리 종결자를 다시 설정 하면 사용 하지 마십시오 TRANSACT-SQL 예약 키워드 또는 운영 체제에 대 한 특별 한 의미가 있는 문자 앞에 백슬래시가 있더라도.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]
    로컬로 구성된 서버 컴퓨터와 네트워크상에서 브로드캐스팅하는 서버 컴퓨터의 이름을 표시합니다.Lists the locally configured server computers, and the names of the server computers that are broadcasting on the network. 이 매개 변수는 다른 매개 변수와 함께 사용할 수 없습니다.This parameter cannot be used in combination with other parameters. 표시할 수 있는 최대 서버 컴퓨터 수는 3000대입니다.The maximum number of server computers that can be listed is 3000. 버퍼 크기 때문에 서버 목록이 잘린 경우 경고 메시지가 표시됩니다.If the server list is truncated because of the size of the buffer a warning message is displayed.

참고

네트워크에서 브로드캐스팅의 특성으로 인해 sqlcmd 는 모든 서버로부터 시기 적절한 응답을 받지 못할 수 있습니다.Because of the nature of broadcasting on networks, sqlcmd may not receive a timely response from all servers. 그러므로 반환되는 서버 목록은 이 옵션을 호출할 때마다 다를 수 있습니다.Therefore, the list of servers returned may vary for each invocation of this option.

옵션 매개 변수 c 를 지정하면 Servers: 머리글 없이 출력이 나타납니다. 그리고 각 서버 줄이 선행 공백 없이 나열됩니다.If the optional parameter c is specified, the output appears without the Servers: header line and each server line is listed without leading spaces. 이를 정리된 출력이라고 합니다.This is referred to as clean output. 정리된 출력은 스크립트 언어의 처리 성능을 향상시킵니다.Clean output improves the processing performance of scripting languages.

-p[1]-p[1]
모든 결과 집합에 대한 성능 통계를 출력합니다.Prints performance statistics for every result set. 다음은 성능 통계 형식의 예입니다.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.)

각 항목이 나타내는 의미는 다음과 같습니다.Where:

x= SQL Server에서 처리 된 트랜잭션의 수입니다.x = Number of transactions that are processed by SQL Server .

t1 = 모든 트랜잭션의 총 시간t1 = Total time for all transactions.

t2 = 단일 트랜잭션의 평균 시간t2 = Average time for a single transaction.

t3 = 초당 평균 트랜잭션 수t3 = Average number of transactions per second.

모든 시간은 밀리초 단위입니다.All times are in milliseconds.

선택적 매개 변수 1 을 지정할 경우 통계의 출력 형식은 콜론으로 구분된 형식입니다. 이 형식은 스프레드시트로 쉽게 가져오거나 스크립트를 통해 처리할 수 있습니다.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.

이 선택적 매개 변수의 값이 1이 아닌 경우 오류가 생성되고 sqlcmd 가 종료됩니다.If the optional parameter is any value other than 1, an error is generated and sqlcmd exits.

-X[1]-X[1]
배치 파일에서 sqlcmd 를 실행할 때 시스템 보안을 손상시킬 수 있는 명령을 사용할 수 없게 설정합니다.Disables commands that might compromise system security when sqlcmd is executed from a batch file. 사용할 수 없게 설정된 명령은 여전히 인식되지만 sqlcmd 는 경고 메시지를 표시하고 계속 실행됩니다.The disabled commands are still recognized; sqlcmd issues a warning message and continues. 선택적 매개 변수 1 을 지정하면 sqlcmd 는 오류 메시지를 생성하고 종료됩니다.If the optional parameter 1 is specified, sqlcmd generates an error message and then exits. -X 옵션을 사용하면 다음 명령이 사용할 수 없게 설정됩니다.The following commands are disabled when the -X option is used:

  • EDED

  • !!!! 명령command

    -X 옵션을 지정하면 환경 변수가 sqlcmd에 전달되지 않습니다.If the -X option is specified, it prevents environment variables from being passed on to sqlcmd. 또한 SQLCMDINI 스크립팅 변수를 사용하여 지정한 시작 스크립트가 실행되지 않습니다.It also prevents the startup script specified by using the SQLCMDINI scripting variable from being executed. sqlcmd 스크립팅 변수에 대한 자세한 내용은 스크립팅 변수와 함께 sqlcmd 사용을 참조하세요.For more information about sqlcmd scripting variables, see Use sqlcmd with Scripting Variables.

    -?-?
    sqlcmd 버전과 sqlcmd 옵션의 구문 요약 정보를 표시합니다.Displays the version of sqlcmd and a syntax summary of sqlcmd options.

주의Remarks

옵션은 구문 섹션에 표시된 순서대로 사용하지 않아도 됩니다.Options do not have to be used in the order shown in the syntax section.

여러 결과가 반환된 경우 sqlcmd 는 일괄 처리의 각 결과 집합 사이에 빈 줄을 출력합니다.When multiple results are returned, sqlcmd prints a blank line between each result set in a batch. 또한, 실행되는 문에 적용되지 않을 때는 <x> rows affected 메시지가 나타나지 않습니다.In addition, the <x> rows affected message does not appear when it does not apply to the statement executed.

대화형으로 sqlcmd 를 사용하려면 명령 프롬프트에 이 항목의 위에서 설명한 하나 이상의 옵션과 함께 sqlcmd 를 입력합니다.To use sqlcmd interactively, type sqlcmd at the command prompt with any one or more of the options described earlier in this topic. 자세한 내용은 sqlcmd 유틸리티 사용을 참조하세요.For more information, see Use the sqlcmd Utility

참고

-L, -Q, -Z 또는 -i 옵션으로 인해 sqlcmd 는 실행 후 종료됩니다.The options -L, -Q, -Z or -i cause sqlcmd to exit after execution.

명령 환경(Cmd.exe)에서 모든 인수 및 확장 변수를 포함한 sqlcmd 명령줄의 총 길이는 운영 체제에서 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.

변수 우선 순위(낮은 순위에서 높은 순위)Variable Precedence (Low to High)

  1. 시스템 수준 환경 변수System-level environmental variables.

  2. 사용자 수준 환경 변수User-level environmental variables

  3. sqlcmd 를 실행하기 전에 명령 프롬프트에서 설정한 명령 셸( SETX=Y)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

참고

환경 변수를 보려면 제어판에서 시스템을 연 다음 고급 탭을 클릭합니다.To view the environmental variables, in Control Panel, open System, and then click the Advanced tab.

sqlcmd 스크립팅 변수sqlcmd Scripting Variables

변수Variable 관련 스위치Related switch R/WR/W 기본값Default
SQLCMDUSERSQLCMDUSER -U-U RR """"
SQLCMDPASSWORDSQLCMDPASSWORD -P-P -- """"
SQLCMDSERVERSQLCMDSERVER -S-S RR "DefaultLocalInstance""DefaultLocalInstance"
SQLCMDWORKSTATIONSQLCMDWORKSTATION -H-H RR "ComputerName""ComputerName"
SQLCMDDBNAMESQLCMDDBNAME -d-d RR """"
SQLCMDLOGINTIMEOUTSQLCMDLOGINTIMEOUT -l-l R/WR/W "8"(초)"8" (seconds)
SQLCMDSTATTIMEOUTSQLCMDSTATTIMEOUT -t-t R/WR/W "0" = 무기한 대기"0" = wait indefinitely
SQLCMDHEADERSSQLCMDHEADERS -H-h R/WR/W "0""0"
SQLCMDCOLSEPSQLCMDCOLSEP -S-s R/WR/W " "" "
SQLCMDCOLWIDTHSQLCMDCOLWIDTH -w-w R/WR/W "0""0"
SQLCMDPACKETSIZESQLCMDPACKETSIZE -A-a RR "4096""4096"
SQLCMDERRORLEVELSQLCMDERRORLEVEL -M-m R/WR/W 00
SQLCMDMAXVARTYPEWIDTHSQLCMDMAXVARTYPEWIDTH -y-y R/WR/W "256""256"
SQLCMDMAXFIXEDTYPEWIDTHSQLCMDMAXFIXEDTYPEWIDTH -y-Y R/WR/W "0" = 제한 없음"0" = unlimited
SQLCMDEDITORSQLCMDEDITOR R/WR/W "edit.com""edit.com"
SQLCMDINISQLCMDINI RR """"
SQLCMDUSEAADSQLCMDUSEAAD -G-G R/WR/W """"

SQLCMDUSER, SQLCMDPASSWORD 및 SQLCMDSERVER는 :Connect 가 사용될 때 설정됩니다.SQLCMDUSER, SQLCMDPASSWORD and SQLCMDSERVER are set when :Connect is used.

R은 값이 프로그램 초기화 시 한 번만 설정될 수 있음을 나타냅니다.R indicates the value can only be set one time during program initialization.

R/W는 값이 setvar 명령을 사용하여 수정될 수 있으며 후속 명령이 새 값의 영향을 받을 수 있음을 나타냅니다.R/W indicates that the value can be modified by using the setvar command and subsequent commands will be influenced by the new value.

sqlcmd 명령sqlcmd Commands

Transact SQL 문 내에서 뿐 아니라 sqlcmd, 다음 명령을 사용할 수 있습니다.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

sqlcmd 명령을 사용할 때는 다음 사항에 주의하세요.Be aware of the following when you use sqlcmd commands:

  • GO를 제외한 모든 sqlcmd 명령에는 접두사로 콜론(:)을 붙여야 합니다.All sqlcmd commands, except GO, must be prefixed by a colon (:).

    중요

    osql 스크립트와의 호환성을 유지하기 위해 일부 명령은 콜론 없이도 인식됩니다.To maintain backward compatibility with existing osql scripts, some of the commands will be recognized without the colon. 이러한 명령은 [:]으로 표시됩니다.This is indicated by the [:].

  • sqlcmd 명령은 줄 시작 부분에 나타난 경우에만 인식됩니다.sqlcmd commands are recognized only if they appear at the start of a line.

  • 모든 sqlcmd 명령은 대/소문자를 구분하지 않습니다.All sqlcmd commands are case insensitive.

  • 각 명령을 별도의 줄에 입력해야 합니다.Each command must be on a separate line. TRANSACT-SQL 문이나 다른 명령의 명령을 올 수 없습니다.A command cannot be followed by a Transact-SQL statement or another command.

  • 명령은 즉시 실행되며Commands are executed immediately. TRANSACT-SQL 문을 종종 실행 버퍼에 포함 되지 됩니다.They are not put in the execution buffer as Transact-SQL statements are.

    명령 편집Editing Commands
    [:] ED[:] ED
    텍스트 편집기를 시작합니다.Starts the text editor. 마지막 일괄 처리 실행 또는 현재 TRANSACT-SQL 일괄 처리를 편집 하려면이 편집기를 사용할 수 있습니다.This editor can be used to edit the current Transact-SQL batch, or the last executed batch. 마지막으로 실행된 일괄 처리를 편집하려면 마지막 일괄 처리 실행을 마친 후 즉시 ED 명령을 입력해야 합니다.To edit the last executed batch, the ED command must be typed immediately after the last batch has completed execution.

    텍스트 편집기는 SQLCMDEDITOR 환경 변수에 의해 정의됩니다.The text editor is defined by the SQLCMDEDITOR environment variable. 기본 편집기는 'Edit'입니다.The default editor is 'Edit'. 편집기를 변경하려면 SQLCMDEDITOR 환경 변수를 설정합니다.To change the editor, set the SQLCMDEDITOR environment variable. 예를 들어 편집기 Microsoft 메모장을 명령 프롬프트에서으로 설정 하려면 다음을 입력 합니다.For example, to set the editor to Microsoft Notepad, at the command prompt, type:

    SET SQLCMDEDITOR=notepad

    [:] RESET[:] RESET
    문 캐시를 지웁니다.Clears the statement cache.

    :List:List
    문 캐시 내용을 출력합니다.Prints the content of the statement cache.

    변수Variables
    :Setvar <var> [ "value" ]:Setvar <var> [ "value" ]
    sqlcmd 스크립팅 변수를 정의합니다.Defines sqlcmd scripting variables. 스크립팅 변수의 형식은 다음과 같습니다. $(VARNAME).Scripting variables have the following format: $(VARNAME).

    변수 이름은 대/소문자를 구분하지 않습니다.Variable names are case insensitive.

    스크립팅 변수는 다음과 같은 방법으로 설정할 수 있습니다.Scripting variables can be set in the following ways:

  • 명령줄 옵션을 사용하여 암시적으로 설정합니다.Implicitly using a command-line option. 예를 들어 -l 옵션은 SQLCMDLOGINTIMEOUT sqlcmd 변수를 설정합니다.For example, the -l option sets the SQLCMDLOGINTIMEOUT sqlcmd variable.

  • :Setvar 명령을 사용하여 명시적으로 설정합니다.Explicitly by using the :Setvar command.

  • sqlcmd를 실행하기 전에 환경 변수를 정의하여 설정합니다.By defining an environment variable before you run sqlcmd.

참고

-X 옵션은 환경 변수가 sqlcmd에 전달되지 않도록 합니다.The -X option prevents environment variables from being passed on to sqlcmd.

:Setvar 명령을 사용하여 정의한 변수와 환경 변수의 이름이 같을 경우 :Setvar 명령을 사용하여 정의한 변수가 우선적으로 적용됩니다.If a variable defined by using :Setvar and an environment variable have the same name, the variable defined by using :Setvar takes precedence.

변수 이름에는 공백 문자를 포함해서는 안 됩니다.Variable names must not contain blank space characters.

변수 이름은 $(var) 등의 변수 식과 다른 형식이어야 합니다.Variable names cannot have the same form as a variable expression, such as $(var).

스크립팅 변수의 문자열 값에 공백이 포함된 경우 값을 따옴표로 묶습니다.If the string value of the scripting variable contains blank spaces, enclose the value in quotation marks. 스크립팅 변수 값을 지정하지 않으면 스크립팅 변수가 삭제됩니다.If a value for a scripting variable is not specified, the scripting variable is dropped.

:Listvar:Listvar
현재 설정되어 있는 스크립팅 변수의 목록을 표시합니다.Displays a list of the scripting variables that are currently set.

참고

sqlcmd에서 설정한 스크립팅 변수와 :Setvar 명령을 사용하여 설정한 스크립팅 변수만 표시됩니다.Only scripting variables that are set by sqlcmd, and those that are set using the :Setvar command will be displayed.

출력 명령Output Commands
:Error :Error
< filename >| STDERR|STDOUT< filename >| STDERR|STDOUT
file name에 지정된 파일, stderr 또는 stdout으로 모든 오류 출력을 리디렉션합니다.Redirect all error output to the file specified by file name, to stderr or to stdout. 스크립트에서 Error 명령이 여러 번 나타날 수 있습니다.The Error command can appear multiple times in a script. 기본적으로 오류 출력은 stderr로 전송됩니다.By default, error output is sent to stderr.

file namefile name
출력을 받을 파일을 만들고 엽니다.Creates and opens a file that will receive the output. 이 파일이 이미 있을 경우 0바이트로 잘립니다.If the file already exists, it will be truncated to zero bytes. 권한이나 기타 이유로 인해 이 파일을 사용할 수 없을 경우 출력이 전환되지 않으며 마지막으로 지정한 대상이나 기본 대상으로 전송됩니다.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
오류 출력을 stderr 스트림으로 전환합니다.Switches error output to the stderr stream. 스트림을 리디렉션할 경우 리디렉션된 스트림 대상이 오류 출력을 받습니다.If this has been redirected, the target to which the stream has been redirected will receive the error output.

STDOUTSTDOUT
오류 출력을 stdout 스트림으로 전환합니다.Switches error output to the stdout stream. 스트림을 리디렉션할 경우 리디렉션된 스트림 대상이 오류 출력을 받습니다.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
쿼리 결과를 만들어 file name에 지정된 파일, stderr 또는 stdout으로 모두 리디렉션합니다.Creates and redirects all query results to the file specified by file name, to stderr or to stdout. 기본적으로 출력은 stdout으로 전송됩니다.By default, output is sent to stdout. 이 파일이 이미 있을 경우 0바이트로 잘립니다.If the file already exists, it will be truncated to zero bytes. 스크립트에서 Out 명령이 여러 번 나타날 수 있습니다.The Out command can appear multiple times in a script.

:Perftrace < filename >| STDERR| STDOUT:Perftrace < filename >| STDERR| STDOUT
성능 추적 정보를 만들어 file name에 지정된 파일, stderr 또는 stdout으로 모두 리디렉션합니다.Creates and redirects all performance trace information to the file specified by file name, to stderr or to stdout. 기본적으로 성능 추적 출력은 stdout으로 전송됩니다.By default performance trace output is sent to stdout. 이 파일이 이미 있을 경우 0바이트로 잘립니다.If the file already exists, it will be truncated to zero bytes. 스크립트에서 Perftrace 명령이 여러 번 나타날 수 있습니다.The Perftrace command can appear multiple times in a script.

실행 제어 명령Execution Control Commands
:On Error[ exit | ignore]:On Error[ exit | ignore]
스크립트나 일괄 처리를 실행하는 동안 오류가 발생할 때 수행할 동작을 설정합니다.Sets the action to be performed when an error occurs during script or batch execution.

exit 옵션을 사용하면 해당 오류 값이 표시되고 sqlcmd 가 종료됩니다.When the exit option is used, sqlcmd exits with the appropriate error value.

ignore 옵션을 사용하면 sqlcmd 는 오류를 무시하고 일괄 처리 또는 스크립트를 계속 실행합니다.When the ignore option is used, sqlcmd ignores the error and continues executing the batch or script. 기본적으로 오류 메시지가 출력됩니다.By default, an error message will be printed.

[:] QUIT[:] QUIT
sqlcmd 가 종료되도록 합니다.Causes sqlcmd to exit.

[:] EXIT[ (statement) ][:] EXIT[ (statement) ]
SELECT 문의 결과를 sqlcmd의 반환 값으로 사용할 수 있도록 합니다.Lets you use the result of a SELECT statement as the return value from sqlcmd. 숫자일 경우 마지막 결과 행의 첫째 열은 4바이트 정수(long)로 변환됩니다.If numeric, the first column of the last result row is converted to a 4-byte integer (long). MS-DOS는 하위 바이트를 부모 프로세스 또는 운영 체제 오류 수준에 전달합니다.MS-DOS passes the low byte to the parent process or operating system error level. Windows 200x에서는 4바이트 정수 전체를 전달합니다.Windows 200x passes the whole 4-byte integer. 구문은 다음과 같습니다.The syntax is:

:EXIT(query)

예를 들어For example:

:EXIT(SELECT @@ROWCOUNT)

EXIT 매개 변수를 배치 파일의 일부로 포함할 수도 있습니다.You can also include the EXIT parameter as part of a batch file. 예를 들어 명령 프롬프트에서 다음을 입력합니다.For example, at the command prompt, type:

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

sqlcmd 유틸리티는 괄호 () 안의 모든 항목을 서버로 보냅니다.The sqlcmd utility sends everything between the parentheses () to the server. 시스템의 저장 프로시저가 설정을 선택하고 값을 반환하면 선택 내용만 반환됩니다.If a system stored procedure selects a set and returns a value, only the selection is returned. 괄호 사이에 아무것도 없는 EXIT() 문은 일괄 처리에서 이 문 앞에 나오는 모든 문을 실행한 후에 반환 값 없이 종료됩니다.The EXIT() statement with nothing between the parentheses executes everything before it in the batch and then exits without a return value.

잘못된 쿼리를 지정하면 sqlcmd 는 값을 반환하지 않고 종료됩니다.When an incorrect query is specified, sqlcmd will exit without a return value.

다음은 EXIT 형식의 목록입니다.Here is a list of EXIT formats:

  • :EXIT:EXIT

    일괄 처리를 실행하지 않고 즉시 종료하며 값을 반환하지 않습니다.Does not execute the batch, and then quits immediately and returns no value.

  • :EXIT( ):EXIT( )

    일괄 처리를 실행한 다음 종료하며 값을 반환하지 않습니다.Executes the batch, and then quits and returns no value.

  • :EXIT(query):EXIT(query)

    쿼리를 포함하는 일괄 처리를 실행하며 쿼리 결과를 반환한 다음 종료합니다.Executes the batch that includes the query, and then quits after it returns the results of the query.

    sqlcmd 스크립트에 RAISERROR를 사용할 때 상태 127이 발생하면 sqlcmd 가 종료되고 메시지 ID가 클라이언트에 반환됩니다.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. 예를 들어For example:

    RAISERROR(50001, 10, 127)

    이 오류가 발생하면 sqlcmd 스크립트가 종료되고 메시지 ID 50001이 클라이언트에 반환됩니다.This error will cause the sqlcmd script to end and return the message ID 50001 to the client.

    SQL Server;에서 99 까지의 반환 값-1은 예약 sqlcmd 다음과 같은 추가 반환 값을 정의 합니다.The return values -1 to -99 are reserved by SQL Server ; sqlcmd defines the following additional return values:

반환 값Return Values DescriptionDescription
-100-100 반환 값을 선택하기 전에 오류가 발생했습니다.Error encountered prior to selecting return value.
-101-101 반환 값을 선택할 때 행을 찾을 수 없습니다.No rows found when selecting return value.
-102-102 반환 값을 선택할 때 변환 오류가 발생했습니다.Conversion error occurred when selecting return value.

GO [count]GO [count]
GO는 일괄 처리의 끝을 알립니다 및를 실행 TRANSACT-SQL 문을 캐시 합니다. 일괄 처리가 별도 일괄 처리;로 여러 번 실행 단일 일괄 처리에 두 번 이상 변수를 선언할 수 없습니다.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.

기타 명령Miscellaneous Commands
:r < filename>:r < filename >
추가 Transact SQL 문을 구문 분석 및 sqlcmd 로 지정 된 파일에 포함 된 명령을 ** < ** filename>캐시로 합니다.Parses additional Transact-SQL statements and sqlcmd commands from the file specified by <filename>into the statement cache.

파일을 따르지 하 여 TRANSACT-SQL 문을 포함 하는 경우 이동를 입력 해야 이동 뒤에 오는 줄에 : r합니다.If the file contains Transact-SQL statements that are not followed by GO, you must enter GO on the line that follows :r.

참고

< filename >sqlcmd가 실행된 시작 디렉터리를 기준으로 상대적으로 읽혀집니다.< filename > is read relative to the startup directory in which sqlcmd was run.

일괄 처리 종결자가 나타난 후 이 파일이 읽혀지고 실행됩니다.The file will be read and executed after a batch terminator is encountered. 여러 :r 명령을 실행할 수 있습니다.You can issue multiple :r commands. 이 파일에는 모든 유형의 sqlcmd 명령이 포함될 수 있으며The file may include any sqlcmd command. 그 예로 일괄 처리 종결자 GO를 들 수 있습니다.This includes the batch terminator GO.

참고

대화형 모드에서 표시되는 줄 수는 :r 명령이 나타날 때마다 1씩 증가합니다.The line count that is displayed in interactive mode will be increased by one for every :r command encountered. :r 명령은 목록 명령의 출력에 나타납니다.The :r command will appear in the output of the list command.

:Serverlist:Serverlist
로컬로 구성된 서버와 네트워크상에서 브로드캐스팅하는 서버의 이름을 표시합니다.Lists the locally configured servers and the names of the servers broadcasting on the network.

:Connect 인스턴스에 연결하려면[\instance_name] [-l timeout] [-U user_name [-P password]]:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]]
SQL Server의 인스턴스에 연결합니다.Connects to an instance of SQL Server . 또한 현재 연결을 종료합니다.Also closes the current connection.

제한 시간 옵션은 다음과 같습니다.Time-out options:

00 무기한 대기wait forever
n>0n>0 n초 동안 대기wait for n seconds

SQLCMDSERVER 스크립팅 변수는 현재 활성 연결을 반영합니다.The SQLCMDSERVER scripting variable will reflect the current active connection.

timeout 을 지정하지 않으면 기본적으로 SQLCMDLOGINTIMEOUT 변수 값이 사용됩니다.If timeout is not specified, the value of the SQLCMDLOGINTIMEOUT variable is the default.

옵션이나 환경 변수로 user_name 만 지정하면 사용자에게 암호를 입력하라는 메시지가 표시됩니다.If only user_name is specified (either as an option, or as an environment variable), the user will be prompted to enter a password. 이는 SQLCMDUSER 또는 SQLCMDPASSWORD 환경 변수를 설정한 경우 해당되지 않습니다.This is not true if the SQLCMDUSER or SQLCMDPASSWORD environment variables have been set. 옵션이나 환경 변수를 지정하지 않을 경우 로그인하는 데 Windows 인증 모드가 사용됩니다.If neither options nor environment variables are provided, Windows Authentication mode is used to login. 예를 들어, 인스턴스에 연결 하는 데 instance1, SQL Server의 myserver, 통합된 보안을 사용 하 여 다음을 사용 합니다.For example to connect to an instance, instance1, of SQL Server , myserver, by using integrated security you would use the following:

:connect myserver\instance1

스크립팅 변수를 사용하여 myserver 의 기본 인스턴스에 연결하려면 다음을 사용합니다.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)

[:] !!< 명령>[:] !!< command>
운영 체제 명령을 실행합니다.Executes operating system commands. 운영 체제 명령을 실행하려면 느낌표 두 개(!!)로 줄을 시작하고 운영 체제 명령을 입력합니다.To execute an operating system command, start a line with two exclamation marks (!!) followed by the operating system command. 예를 들어For example:

:!! Dir

참고

sqlcmd 를 실행 중인 컴퓨터에서 명령이 실행됩니다.The command is executed on the computer on which sqlcmd is running.

:XML [ON | OFF]:XML [ON | OFF]
자세한 내용은 이 항목의 XML 출력 형식JSON 출력 형식 을 참조하세요.For more information, see XML Output Format and JSON Output Format in this topic

:Help:Help
sqlcmd 명령과 각 명령에 대한 간단한 설명을 표시합니다.Lists sqlcmd commands together with a short description of each command.

sqlcmd 파일 이름sqlcmd File Names

sqlcmd 입력 파일은 -i 옵션 또는 :r 명령을 사용하여 지정할 수 있습니다.sqlcmd input files can be specified with the -i option or the :r command. 출력 파일은 -o 옵션 또는 :Error, :Out:Perftrace 명령을 사용하여 지정할 수 있습니다.Output files can be specified with the -o option or the :Error, :Out and :Perftrace commands. 다음은 이러한 파일 작업에 대한 지침입니다.The following are some guidelines for working with these files:

  • :Error, :Out:Perftrace 는 별도의 <filename>을 사용해야 합니다.:Error, :Out and :Perftrace should use separate <filename>. 동일한 <filename> 을 사용하면 명령의 입력이 섞일 수 있습니다.If the same <filename> is used, inputs from the commands may be intermixed.

  • 원격 서버에 있는 입력 파일을 로컬 컴퓨터에 있는 sqlcmd 에서 호출할 경우 이 파일에 :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. 출력 파일이 원격 서버가 아닌 로컬 컴퓨터에 생성됩니다.The output file will be created on the local computer and not on the remote server.

  • 올바른 파일 경로의 예는 C:\<filename>, \\<Server>\<Share$>\<filename> , "C:\Some Folder\<file name>"입니다.Valid file paths include: C:\<filename>, \\<Server>\<Share$>\<filename> and "C:\Some Folder\<file name>". 경로에 공백이 있을 경우 따옴표를 사용합니다.If there is a space in the path, use quotation marks.

  • 각각의 새 sqlcmd 세션은 이름이 같은 기존 파일을 덮어씁니다.Each new sqlcmd session will overwrite existing files that have the same names.

정보 메시지Informational Messages

sqlcmd 는 서버에서 보낸 모든 정보 메시지를 출력합니다.sqlcmd prints any informational message that are sent by the server. TRANSACT-SQL 문, 실행 후에 다음 예에서 정보 메시지가 출력 됩니다.In the following example, after the Transact-SQL statements are executed, an informational message is printed.

명령 프롬프트에서 다음을 입력합니다.At the command prompt, type the following:

sqlcmd

At the sqlcmd prompt type:

USE AdventureWorks2012;

GO

Enter 키를 누르면 "데이터베이스 컨텍스트가 'AdventureWorks2012'로 변경되었습니다." 정보 메시지가 출력됩니다.When you press ENTER, the following informational message is printed: "Changed database context to 'AdventureWorks2012'."

Transact-SQL 쿼리의 출력 형식Output Format from Transact-SQL Queries

먼저sqlcmd 는 SELECT 목록에서 지정한 열 이름이 포함된 열 머리글을 출력합니다.sqlcmd first prints a column header that contains the column names specified in the select list. 열 이름은 SQLCMDCOLSEP 문자로 구분됩니다.The column names are separated by using the SQLCMDCOLSEP character. 기본적으로 구분 문자는 공백입니다.By default, this is a space. 열 이름이 열 너비보다 짧은 경우 출력은 다음 열까지 공백으로 채워집니다.If the column name is shorter than the column width, the output is padded with spaces up to the next column.

이 줄 다음에는 대시 문자로 이루어진 구분선이 삽입됩니다.This line will be followed by a separator line that is a series of dash characters. 다음은 출력의 예입니다.The following output shows an example.

sqlcmd를 시작합니다.Start sqlcmd. sqlcmd 명령 프롬프트에서 다음을 입력합니다.At the sqlcmd command prompt, type the following:

USE AdventureWorks2012;

SELECT TOP (2) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

Enter 키를 누르면 다음 결과 집합이 반환됩니다.When you press ENTER, the following result set is retuned.

BusinessEntityID FirstName LastName

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

285 Syed Abbas

293 Catherine Abel

(2 row(s) affected)

BusinessEntityID 열의 너비는 4자이지만 보다 긴 열 이름을 포함할 수 있도록 확장되었습니다.Although the BusinessEntityID column is only 4 characters wide, it has been expanded to accommodate the longer column name. 기본적으로 출력은 80자에서 끝납니다.By default, output is terminated at 80 characters. 그러나 -w 옵션을 사용하거나 SQLCMDCOLWIDTH 스크립팅 변수를 설정하여 이 값을 변경할 수 있습니다.This can be changed by using the -w option, or by setting the SQLCMDCOLWIDTH scripting variable.

XML 출력 형식 XML Output Format

FOR XML 절의 결과로 나오는 XML 출력은 연속 스트림에서 형식이 지정되지 않은 출력입니다.XML output that is the result of a FOR XML clause is output, unformatted, in a continuous stream.

XML 출력을 원하는 경우에는 :XML ON명령을 사용합니다.When you expect XML output, use the following command: :XML ON.

참고

sqlcmd 는 일반 형식으로 오류 메시지를 반환합니다.sqlcmd returns error messages in the usual format. 오류 메시지는 XML 형식으로 XML 텍스트 스트림에도 출력됩니다.Notice that the error messages are also output in the XML text stream in XML format. :XML ON을 사용할 경우 sqlcmd 에서는 정보 메시지를 표시하지 않습니다.By using :XML ON, sqlcmd does not display informational messages.

XML 모드를 해제하려면 :XML OFF명령을 사용합니다.To set the XML mode off, use the following command: :XML OFF.

XML OFF 명령은 sqlcmd 를 다시 행 기반 출력으로 전환하기 때문에 GO 명령은 XML OFF 명령이 실행된 후에 나타나야 합니다.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.

스트리밍된 XML 데이터와 행 집합 데이터를 혼합할 수 없습니다.XML (streamed) data and rowset data cannot be mixed. XML 스트림을 출력 하는 TRANSACT-SQL 문을 실행 하기 전에 XML ON 명령을 발급 되었으면, 출력이 잘못 됩니다.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. XML ON 명령을 실행 한 경우 일반 행 집합을 출력 하는 TRANSACT-SQL 문을 실행할 수 없습니다.If the XML ON command has been issued, you cannot execute Transact-SQL statements that output regular row sets.

참고

:XML 명령은 SET STATISTICS XML 문을 지원하지 않습니다.The :XML command does not support the SET STATISTICS XML statement.

JSON 출력 형식 JSON Output Format

JSON 출력을 원하는 경우에는 다음 명령을 사용합니다. :XML ONWhen you expect JSON output, use the following command: :XML ON. 그렇지 않으면 출력에 열 이름과 JSON 텍스트가 모두 포함됩니다.Otherwise the output includes both the column name and the JSON text. 이 출력은 유효한 JSON이 아닙니다.This output is not valid JSON.

XML 모드를 해제하려면 :XML OFF명령을 사용합니다.To set the XML mode off, use the following command: :XML OFF.

자세한 내용은 이 항목의 XML 출력 형식 을 참조하세요.For more info, see XML Output Format in this topic.

Azure Active Directory 인증 사용Using Azure Active Directory Authentication

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

sqlcmd를 위한 최선의 구현 방법sqlcmd Best Practices

보안 및 효율성을 극대화하려면 다음 방법을 사용하십시오.Use the following practices to help maximize security and efficiency.

  • 통합 보안을 사용합니다.Use integrated security.

  • 자동화된 환경에서 -X 를 사용합니다.Use -X in automated environments.

  • 적절한 NTFS 파일 시스템 권한을 사용하여 입력 및 출력 파일을 보호합니다.Secure input and output files by using appropriate NTFS file system permissions.

  • 성능을 향상시키려면 여러 세션 대신 한 번의 sqlcmd 세션에서 가능한 한 많은 작업을 수행합니다.To increase performance, do as much in one sqlcmd session as you can, instead of in a series of sessions.

  • 일괄 처리 또는 쿼리를 실행하는 데 걸리는 예상 시간보다 높은 제한 시간 값을 일괄 처리 또는 쿼리 실행에 대해 설정합니다.Set time-out values for batch or query execution higher than you expect it will take to execute the batch or query.

관련 항목:See Also

sqlcmd 유틸리티 시작 Start the sqlcmd Utility
sqlcmd를 사용하여 Transact-SQL 스크립트 파일 실행 Run Transact-SQL Script Files Using sqlcmd
sqlcmd 유틸리티 사용 Use the sqlcmd Utility
스크립팅 변수와 함께 sqlcmd 사용 Use sqlcmd with Scripting Variables
sqlcmd를 사용하여 데이터베이스 엔진에 연결 Connect to the Database Engine With sqlcmd
쿼리 편집기로 SQLCMD 스크립트 편집 Edit SQLCMD Scripts with Query Editor
작업 단계 관리 Manage Job Steps
CmdExec 작업 단계 만들기Create a CmdExec Job Step