sqlcmd를 사용하여 연결Connecting with sqlcmd

다운로드ODBC 드라이버 다운로드DownloadDownload ODBC Driver

sqlcmd 유틸리티는 Linux 및 macOS 기반 SQL ServerSQL ServerMicrosoftMicrosoft ODBC Driver에서 사용할 수 있습니다.The sqlcmd utility is available with the MicrosoftMicrosoft ODBC Driver for SQL ServerSQL Server on Linux and macOS.

다음 명령은 Windows 인증(Kerberos) 및 SQL ServerSQL Server 인증을 각각 사용하는 방법을 보여 줍니다.The following commands show how to use Windows Authentication (Kerberos) and SQL ServerSQL Server Authentication, respectively:

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

사용 가능한 옵션Available Options

현재 릴리스에서 다음 옵션을 사용할 수 있습니다.In the current release, the following options are available:

  • -?-? sqlcmd 사용을 표시합니다.Display sqlcmd usage.

  • -a 패킷 크기를 요청합니다.-a Request a packet size.

  • -b 오류가 발생하는 경우 배치 작업을 종료합니다.-b Terminate batch job if there is an error.

  • -c batch_terminator 일괄 처리 종결자를 지정합니다.-c batch_terminator Specify the batch terminator.

  • -C 서버 인증서를 신뢰합니다.-C Trust server certificate.

  • -d database_name sqlcmd를 시작할 때 USE USE database_name 문을 실행합니다.-d database_name Issue a USE database_name statement when you start sqlcmd.

  • -D sqlcmd -S 옵션에 전달된 값이 DSN(데이터 원본 이름)으로 해석되도록 합니다.-D Causes the value passed to the sqlcmd -S option to be interpreted as a data source name (DSN). 자세한 내용은 이 항목의 끝에 있는 "sqlcmdbcp에서 DSN 지원"을 참조하세요.For more information, see "DSN Support in sqlcmd and bcp" at the end of this topic.

  • -e 표준 출력 디바이스(stdout)에 입력 스크립트를 기록합니다.-e Write input scripts to the standard output device (stdout).

  • -E 신뢰할 수 있는 연결을 사용합니다(통합된 인증). Linux 또는 macOS 클라이언트에서 통합된 인증을 사용하는 신뢰할 수 있는 연결을 만드는 방법에 대한 자세한 내용은 통합 인증 사용을 참조하세요.-E Use trusted connection (integrated authentication.) For more information about making trusted connections that use integrated authentication from a Linux or macOS client, see Using Integrated Authentication.

  • -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. 코드 페이지 번호는 설치된 Linux 코드 페이지를 지정하는 숫자 값입니다.The codepage number is a numeric value that specifies an installed Linux code page. (17.5.1.1부터 사용 가능)(available since 17.5.1.1)

  • -h number_of_rows 열 머리글 사이에 출력할 행의 수를 지정합니다.-h number_of_rows Specify the number of rows to print between the column headings.

  • -H 워크스테이션 이름을 지정합니다.-H Specify a workstation name.

  • -i input_file[,input_file[,...]] SQL 문 또는 저장 프로시저의 일괄 처리가 포함된 파일을 식별합니다.-i input_file[,input_file[,...]] Identify the file that contains a batch of SQL statements or stored procedures.

  • -I SET QUOTED_IDENTIFIER 연결 옵션을 ON으로 설정합니다.-I Set the SET QUOTED_IDENTIFIER connection option to ON.

  • -k 제어 문자를 제거하거나 바꿉니다.-k Remove or replace control characters.

  • -Kapplication_intent-Kapplication_intent
    서버에 연결할 때 애플리케이션 작업 유형을 선언합니다.Declares the application workload type when connecting to a server. 현재 ReadOnly값만 지원됩니다.The only currently supported value is ReadOnly. -K 를 지정하지 않으면 sqlcmd가 AlwaysOn 가용성 그룹에 있는 보조 복제본에 연결할 수 없습니다.If -K is not specified, sqlcmd does not support connectivity to a secondary replica in an AlwaysOn availability group. 자세한 내용은 ODBC Driver on Linux and macOS - High Availability and Disaster Recovery(Linux 및 macOS의 ODBC 드라이버 - 고가용성, 재해 복구)를 참조하세요.For more information, see ODBC Driver on Linux and macOS - High Availability and Disaster Recovery.

참고

-K 가 CTP for SUSE Linux에서 지원되지 않습니다.-K is not supported in the CTP for SUSE Linux. 그러나 sqlcmd에 전달된 DSN 파일에서 ApplicationIntent=ReadOnly 키워드를 지정합니다.You can, however, specify the ApplicationIntent=ReadOnly keyword in a DSN file passed to sqlcmd. 자세한 내용은 이 항목의 끝에 있는 "sqlcmdbcp에서 DSN 지원"을 참조하세요.For more information, see "DSN Support in sqlcmd and bcp" at the end of this topic.

  • -l timeout 서버에 연결을 시도할 때 sqlcmd 로그인 제한 시간(초)을 지정합니다.-l timeout Specify the number of seconds before a sqlcmd login times out when you try to connect to a server.

  • -m error_level stdout에 보낼 오류 메시지를 제어합니다.-m error_level Control which error messages are sent to stdout.

  • -Mmultisubnet_failover-Mmultisubnet_failover
    SQL Server 2012(11.x)SQL Server 2012 (11.x) 가용성 그룹 또는 SQL Server 2012(11.x)SQL Server 2012 (11.x) 장애 조치(failover) 클러스터 인스턴스의 가용성 그룹 수신기에 연결할 때는 항상 -M을 지정합니다.Always specify -M when connecting to the availability group listener of a SQL Server 2012(11.x)SQL Server 2012 (11.x) availability group or a SQL Server 2012(11.x)SQL Server 2012 (11.x) Failover Cluster Instance. -M은 현재 활성 상태인 서버에 대한 장애 조치를 빠르게 검색하고 연결할 수 있도록 지원합니다.-M provides for faster detection of failovers and connection to the (currently) active server. –M이 지정되지 않으면 -M 이 해제되어 있습니다.If -M is not specified, -M is off. AlwaysOn 가용성 그룹AlwaysOn Availability Groups에 대한 자세한 내용은 Linux 및 macOS의 ODBC 드라이버 - 고가용성 및 재해 복구를 참조하세요.For more information about AlwaysOn 가용성 그룹AlwaysOn Availability Groups, see ODBC Driver on Linux and macOS - High Availability and Disaster Recovery.

참고

-M 이 CTP for SUSE Linux에서 지원되지 않습니다.-M is not supported in the CTP for SUSE Linux. 그러나 sqlcmd에 전달된 DSN 파일에서 MultiSubnetFailover=Yes 키워드를 지정합니다.You can, however, specify the MultiSubnetFailover=Yes keyword in a DSN file passed to sqlcmd. 자세한 내용은 이 항목의 끝에 있는 "sqlcmdbcp에서 DSN 지원"을 참조하세요.For more information, see "DSN Support in sqlcmd and bcp" at the end of this topic.

  • -N 연결을 암호화합니다.-N Encrypt connection.

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

  • -p 모든 결과 집합에 대한 성능 통계를 출력합니다.-p Print performance statistics for every result set.

  • -P 사용자 암호를 지정합니다.-P Specify a user password.

  • -q commandline_query sqlcmd가 시작될 때 쿼리를 실행하지만 쿼리 실행이 완료되더라도 종료하지 않습니다.-q commandline_query Execute a query when sqlcmd starts, but does not exit when the query has finished running.

  • -Q commandline_query sqlcmd가 시작될 때 쿼리를 실행합니다.-Q commandline_query Execute a query when sqlcmd starts. 쿼리가 완료되면 sqlcmd가 종료됩니다.sqlcmd will exit when the query finishes.

  • -r 오류 메시지를 stderr로 리디렉션합니다.-r Redirects error messages to stderr.

  • -R 드라이버에서 클라이언트의 국가별 설정을 사용하여 통화, 날짜/시간 데이터를 문자 데이터로 변환하도록 합니다.-R Causes the driver to use client regional settings to convert currency and date and time data to character data. 현재 en_US(미국 영어) 서식만 사용합니다.Currently only uses en_US (US English) formatting.

  • -s column_separator_char 열 구분 기호를 지정합니다.-s column_separator_char Specify the column-separator character.

  • -S [protocol:] server[ , port]-S [protocol:] server[,port]
    연결할 SQL ServerSQL Server 인스턴스의 이름을 지정하거나 -D가 사용된 경우 DSN을 지정합니다.Specify the instance of SQL ServerSQL Server to connect to, or if -D is used, a DSN. Linux 및 macOS 기반 ODBC 드라이버에는 -S가 필요합니다.The ODBC driver on Linux and macOS requires -S. tcp만 유효한 프로토콜입니다.Note that tcp is the only valid protocol.

  • -t query_timeout 명령(또는 SQL 문)이 시간 초과까지의 시간(초)을 지정합니다.-t query_timeout Specify the number of seconds before a command (or SQL statement) times out.

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

  • -U login_id 사용자 로그인 ID를 지정합니다.-U login_id Specify a user login ID.

  • -V error_severity_level ERRORLEVEL 변수를 설정하는 데 사용되는 심각도를 제어합니다.-V error_severity_level Control the severity level that is used to set the ERRORLEVEL variable.

  • -w column_width 출력할 화면 너비를 지정합니다.-w column_width Specify the screen width for output.

  • -W 열에서 후행 공백을 제거합니다.-W Remove trailing spaces from a column.

  • -x 변수 대체를 사용하지 않습니다.-x Disable variable substitution.

  • -X 명령, 시작 스크립트 및 환경 변수를 사용하지 않습니다.-X Disable commands, startup script, and environment variables.

  • -y variable_length_type_display_width sqlcmd 스크립팅 변수 SQLCMDMAXFIXEDTYPEWIDTH를 설정합니다.-y variable_length_type_display_width Set the sqlcmd scripting variable SQLCMDMAXFIXEDTYPEWIDTH.

  • -Y fixed_length_type_display_width sqlcmd 스크립팅 변수 SQLCMDMAXVARTYPEWIDTH를 설정합니다.-Y fixed_length_type_display_width Set the sqlcmd scripting variable SQLCMDMAXVARTYPEWIDTH.

사용할 수 있는 명령Available Commands

현재 릴리스에서 다음 명령을 사용할 수 있습니다.In the current release, the following commands are available:

  • [:]!![:]!!

  • :Connect:Connect

  • :Error:Error

  • [:]EXIT[:]EXIT

  • GO [count]GO [count]

  • :Help:Help

  • :List:List

  • :Listvar:Listvar

  • :On Error:On Error

  • :Out:Out

  • :Perftrace:Perftrace

  • [:]QUIT[:]QUIT

  • :r:r

  • :RESET:RESET

  • :setvar:setvar

사용할 수 없는 옵션Unavailable Options

현재 릴리스에서 다음 옵션을 사용할 수 없습니다.In the current release, the following options are not available:

  • -A DAC(관리자 전용 연결)를 사용하여 SQL ServerSQL Server에 로그인합니다.-A Log in to SQL ServerSQL Server with a Dedicated Administrator Connection (DAC). DAC(관리자 전용 연결)를 만드는 방법에 대한 자세한 내용은 Programming Guidelines을 참조하세요.For information on how to make a dedicated administrator connection (DAC), see Programming Guidelines.

  • -L 로컬로 구성된 서버 컴퓨터와 네트워크상에서 브로드캐스팅하는 서버 컴퓨터의 이름을 나열합니다.-L List the locally configured server computers, and the names of the server computers that are broadcasting on the network.

  • -v sqlcmd 스크립트에서 사용할 수 있는 sqlcmd 스크립팅 변수를 만듭니다.-v Create a sqlcmd scripting variable that can be used in a sqlcmd script.

다음과 같은 대체 방법을 사용할 수 있습니다. 한 파일에 매개 변수를 저장하여 다른 파일에 추가할 수 있습니다.You can use the following alternative method: Put the parameters inside one file, which you can then append to another file. 그러면 매개 변수 파일을 사용하여 값을 바꿀 수 있습니다.This will help you use a parameter file to replace the values. 예를 들어 다음과 같은 내용으로 a.sql(매개 변수 파일)이라는 파일을 만듭니다.For example, create a file called a.sql (the parameter file) with the following content:

    :setvar ColumnName object_id  
    :setvar TableName sys.objects  

그런 다음, 대체할 매개 변수를 사용하여 b.sql이라는 파일을 만듭니다.Then create a file called b.sql, with the parameters for replacement:

    select $(ColumnName) from $(TableName)  

명령줄에서 다음 명령을 사용하여 a.sqlb.sqlc.sql로 결합합니다.At the command line, combine a.sql and b.sql into c.sql using the following commands:

    cat a.sql > c.sql 
  
    cat b.sql >> c.sql  

sqlcmd를 실행하고 c.sql을 입력 파일로 사용합니다.Run sqlcmd and use c.sql as input file:

    sqlcmd -S<...> -P<..> -U<..> -I c.sql  
  • -z password 암호를 변경합니다.-z password Change password.

  • -Z password 암호를 변경하고 종료합니다.-Z password Change password and exit.

사용할 수 없는 명령Unavailable Commands

현재 릴리스에서 다음 명령을 사용할 수 없습니다.In the current release, the following commands are not available:

  • :ED:ED

  • :ServerList:ServerList

  • :XML:XML

sqlcmd 및 bcp에서 DSN 지원DSN Support in sqlcmd and bcp

-D를 지정하는 경우 sqlcmd 또는 bcp -S 옵션(또는 sqlcmd :Connect 명령)의 서버 이름 대신 DSN(데이터 원본 이름)을 지정할 수 있습니다.You can specify a data source name (DSN) instead of a server name in the sqlcmd or bcp -S option (or sqlcmd :Connect command) if you specify -D. -Dsqlcmd 또는 bcp-S 옵션으로 DSN에 지정된 서버에 연결되게 합니다.-D causes sqlcmd or bcp to connect to the server specified in the DSN by the -S option.

시스템 DSN이 ODBC SysConfigDir 디렉터리의 odbc.ini 파일에 저장됩니다(표준 설치에서는/etc/odbc.ini).System DSNs are stored in the odbc.ini file in the ODBC SysConfigDir directory (/etc/odbc.ini on standard installations). 사용자 DSN이 사용자 홈 디렉터리의 .odbc.ini(~/.odbc.ini)에 저장됩니다.User DSNs are stored in .odbc.ini in a user's home directory (~/.odbc.ini).

Windows 시스템에서 시스템 및 사용자 DSN은 레지스트리에 저장되고 odbcad32.exe를 통해 관리됩니다.On Windows systems, System and User DSNs are stored in the registry and managed via odbcad32.exe. bcp 및 sqlcmd는 파일 DSN을 지원하지 않습니다.File DSNs are not supported by bcp and sqlcmd.

드라이버가 지원하는 항목 목록은 DSN 및 연결 문자열 키워드 및 특성을 참조하세요.See DSN and Connection String Keywords and Attributes for the list of entries which the driver supports.

DSN에는 DRIVER 항목만 있으면 되지만, 원격 서버에 연결하려면 sqlcmd 또는 bcp에 SERVER 요소의 값이 필요합니다.In a DSN, only the DRIVER entry is required, but to connect to a remote server, sqlcmd or bcp needs a value in the SERVER element. SERVER 요소가 비어 있거나 DSN에 없는 경우 sqlcmdbcp는 로컬 시스템의 기본 인스턴스에 연결을 시도합니다.If the SERVER element is empty or not present in the DSN, sqlcmd and bcp will attempt to connect to the default instance on the local system.

Windows 시스템에서 bcp를 사용하는 경우 SQL Server 2017(14.x)SQL Server 2017 (14.x) 및 이전 버전에서는 SQL Native Client 11 드라이버(sqlncli11.dll)가 필요하지만 SQL Server 2019 (15.x)SQL Server 2019 (15.x) 이상에서는 Microsoft ODBC Driver 17 for SQL Server 드라이버(msodbcsql17.dll)가 필요합니다.When using bcp on Windows systems, SQL Server 2017(14.x)SQL Server 2017 (14.x) and earlier require the SQL Native Client 11 driver (sqlncli11.dll) while SQL Server 2019 (15.x)SQL Server 2019 (15.x) and higher require the Microsoft ODBC Driver 17 for SQL Server driver (msodbcsql17.dll).

동일한 옵션이 DSN 및 sqlcmd 또는 bcp 명령줄에서 지정된 경우 명령줄 옵션이 DSN에서 사용되는 값을 재정의합니다.If the same option is specified in both the DSN and the sqlcmd or bcp command line, the command line option overrides the value used in the DSN. 예를 들어 DSN에 DATABASE 항목이 있고 sqlcmd 명령줄이 -d를 포함하는 경우 -d에 전달된 값이 사용됩니다.For example, if the DSN has a DATABASE entry and the sqlcmd command line includes -d, the value passed to -d is used. Trusted_Connection=yes가 DSN에서 지정된 경우 Kerberos 인증이 사용되고 사용자 이름( –U) 및 암호( –P)(제공된 경우)가 무시됩니다.If Trusted_Connection=yes is specified in the DSN, Kerberos authentication is used and user name (-U) and password (-P), if provided, are ignored.

다음 별칭을 정의하여 isql을 호출하는 기존 스크립트는 sqlcmd를 사용하도록 수정할 수 있습니다. alias isql="sqlcmd -D"Existing scripts that invoke isql can be modified to use sqlcmd by defining the following alias: alias isql="sqlcmd -D".

참고 항목See Also

bcp를 사용하여 연결Connecting with bcp
릴리스 정보Release Notes