SQLCMD 유틸리티 사용하기

jevida(강성욱) 2017.01.11 09:00 Views : 8284

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

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 14465
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 8885
2074 SQL Server Install on Linux (Ubuntu – 16.0.4) jevida(강성욱) 2017.01.11 5105
2073 SQL Azure blob storage 백업을 위한 프록시 세팅 jevida(강성욱) 2017.01.11 4287
2072 SQL on Azure 환경에서 SQL 서버 연결 불능 문제(VNET 설정 문제) jevida(강성욱) 2017.01.11 3368
2071 SQL Server 2016 자동 통계 업데이트 임계값 변경 jevida(강성욱) 2017.01.11 4795
2070 SQL Server 2016 Multiple Log Writer Workers jevida(강성욱) 2017.01.11 3876
2069 SQL Server 2016 Larger Data File Writes jevida(강성욱) 2017.01.11 3244
2068 SQL Server 2016 향상된 업데이트 스케줄링 알고리즘 jevida(강성욱) 2017.01.11 3699
2067 SQL Server 2016 Automatic Soft NUMA jevida(강성욱) 2017.01.11 3173
2066 SQL Server 2016 Tempdb 환경 설정 jevida(강성욱) 2017.01.11 4480
2065 SQL Server 2016 향상된 즉시 파일 초기화 jevida(강성욱) 2017.01.11 2830
2064 SQL Server 2016 LDF 생성 또는 증가 시 변경된 스탬프 패턴 jevida(강성욱) 2017.01.11 2683
2063 SQL Server 2016 Tempdb 성능 향상 jevida(강성욱) 2017.01.11 4868
2062 SQL Server 2016 DBCC CHECK 작업 성능 향상 jevida(강성욱) 2017.01.11 2424
2061 Microsoft Azure - SQL Server가 포함된 가상 컴퓨터 생성하기 jevida(강성욱) 2017.01.11 1879
2060 데이터베이스에서 사용자 삭제 오류 jevida(강성욱) 2017.01.11 1348
2059 Sys.dm_exec_query_plan 에서 query_plan 컬럼의 NULL 값 반환 jevida(강성욱) 2017.01.11 1933
2058 SSMS에서 유효하지 않은 소유자로 데이터베이스 정보가 보이지 않는 증상 jevida(강성욱) 2017.01.11 1953
» SQLCMD 유틸리티 사용하기 jevida(강성욱) 2017.01.11 8284
2056 In-Memory 최적화 테이블을 사용하여 임시 테이블 및 테이블 변수 성능 향상 jevida(강성욱) 2017.01.11 5297
2055 SQL Server Job Agent는 몇 개까지 실행이 가능할까? jevida(강성욱) 2017.01.11 1809





XE Login