SQLCMD 유틸리티 사용하기

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016

 

SQLCMD 유틸리티를 사용하면 명령 프롬프트, SQLCMD 모드의 쿼리 편집기, Windows 스크립트파일 또는 SQL Server 에이전트 작업의 운영 체제(cmd.exe) 작업 단계에서 T-SQL 문, 시스템 프로시저 및 스크립트 파일을 입력 할 수 있다.

 

SQLCMD는 OLE DB 공급자를 사용하고, SSMS는 .NET Framework SqlClient를 사용하므로 서로 다른 기본 옵션이 적용될 수 있으므로 동일한 쿼리를 실행하더라도 실행되는 툴에 따라 서로 다른 동작이 수행 될 수 있다.

 

기본 구문은 아래 표와 같다.

sqlcmd

[{ { -U login_id [ -P password ] } | E trusted connection }]

 

[ -N encrypt connection ][ -C trust the server certificate ]

[ -z new password ] [ -Z new password and exit]

[ -S [protocol:]server[\instance_name][,port] ] [ -H wksta_name ] [ -d db_name ]

[ -l login time_out ] [ -A dedicated admin connection]

[ -i input_file ] [ -o output_file ]

[ -f < codepage > | i: < codepage > [ < , o: < codepage > ] ]

[ -u unicode output] [ -r [ 0 | 1 ] msgs to stderr ]

[ -R use client regional settings]

[ -q "cmdline query" ] [ -Q "cmdline query" and exit]

[ -e echo input ] [ -t query time_out ]

[ -I enable Quoted Identifiers ]

[ -v var = "value"...] [ -x disable variable substitution ]

[ -h headers ][ -s col_separator ] [ -w column_width ]

[ -W remove trailing spaces ]

[ -k [ 1 | 2 ] remove[replace] control characters ]

[ -y display_width ] [-Y display_width ]

[ -b on error batch abort] [ -V severitylevel ] [ -m error_level ]

[ -a packet_size ][ -c cmd_end ]

[ -L [ c ] list servers[clean output] ]

[ -p [ 1 ] print statistics[colon format]]

[ -X [ 1 ] ] disable commands, startup script, enviroment variables [and exit]

[ -? show syntax summary]

 

커맨드 관리자를 실행하고 sqlcmd /?를 입력하면 각 항목에 대한 설명을 확인 할 수 있다.

 

SQLCMD의 기본 사용방법에 대해서 알아본다.

[로그인 옵션]

옵션

설명

-U

사용자 로그인 ID

-P

사용자 암호 (대소문자 구분)

기본적으로 –U (사용자 ID) 옵션과 –P (비밀번호) 옵션을 사용한다. 대소문자를 구분하므로 주의한다. 패스워드가 모니터에 그대로 나타나므로 보안에 주의할 수 있도록 한다. -U, -P 옵션을 지정하지 않은 경우 sqlcmd는 Windows 인증 모드를 사용하여 연결한다. 인증은 sqlcmd를 실행하는 사용자의 Windows 계정을 기반으로 수행 된다.

 

 

-U 옵션만 사용하였을 경우 PASSWORD를 입력하라는 메시지가 표시된다. 이때 패스워드를 입력하면 입력한 암호가 모니터에 나타나지 않는다.

 

 

옵션

설명

-S

인스턴스를 지정하여 연결

sqlcmd -U someuser -P s0mep@ssword S ServerName\InstanceName

 

 

 

[비밀번호 변경]

옵션

설명

-z

사용자 암호 변경 (대소문자 주의)

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

-Z

사용자 암호 변경 후 SQLCMD 종료 (실제 테스트 시 종료 안됨)

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

 

 

 

[쿼리 실행 옵션]

옵션

설명

-q"cmdline query"

Sqlcm가 시작될 때 쿼리를 실행, 세미콜론으로 구분된 여러 쿼리를 실행 가능. 쿼리에 GO 종결자를 사용하지 않도록 주의한다.

sqlcmd -U someuser -P s0mep@ssword -d master q "select * from sys.sysobjects where xtype = 'u'"

-Q"cmdline query"

-q 옵션 기능과 동일하며 쿼리가 실행되고 SQLCMD가 종료된다.

 

 

[파일 출력]

옵션

설명

-o "cmdline query"

-u를 지정하면 output_file이 유니코드 형식으로 저장되며 여러sqlcmd 프로세스가 같은 파일에 동시에 쓸 수 없다. 이전 세션에서 동일한 파일이 존재할 경우 덮어 쓰여진다.

공백이 포함된 경로는 따옴표로 묶어야 한다.

 

아래 스크립트는 c:\sql_data 폴더에 test.txt라는 파일을 생성하고 sysobjects 테이블의 조회 결과를 파일에 저장한다.

:out c:\sql_data\test.txt

Select * from sys.sysobjects

Go

 

 

 

아래 스크립트는 sqlcmd 접속 상태에서 데이터베이스를 백업한다.

Backup database master to disk='c:\sql_data\master.bak'

Go

 

 

이 외에도 SQL 스크립트파일을 읽어 실행할 수도 있으며 CMD 모드로 DAC 접속을 사용하여 비상시 대처도 가능하다.

 

 

 

[참고자료]

https://msdn.microsoft.com/ko-kr/library/ms162773(v=sql.105).aspx

https://www.simple-talk.com/sql/sql-tools/sql-server-sqlcmd-basics/

https://www.mssqltips.com/sqlservertip/2478/connecting-to-sql-server-using-sqlcmd-utility/

http://www.howtogeek.com/50295/backup-your-sql-server-database-from-the-command-line/

 

 


강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp





profile

강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

Kakao Talk : SQLMVP

Line : jevida


현재 LA에 거주하고 있으며 SQL에 관심있는 분이면 언제든 친추 환영합니다.