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 접속을 사용하여 비상시 대처도 가능하다.
- SQL Server 2012에서 비상계정 생성하기 - 비밀번호를 잊어 버렸을 경우 대처하기
[참고자료]
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