데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

SQLCMD 유틸리티 사용하기

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

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
2070 SQL Server 2016 Multiple Log Writer Workers jevida(강성욱) 2017.01.11 3795
2069 SQL Server 2016 Larger Data File Writes jevida(강성욱) 2017.01.11 3184
2068 SQL Server 2016 향상된 업데이트 스케줄링 알고리즘 jevida(강성욱) 2017.01.11 3648
2067 SQL Server 2016 Automatic Soft NUMA jevida(강성욱) 2017.01.11 3096
2066 SQL Server 2016 Tempdb 환경 설정 jevida(강성욱) 2017.01.11 4372
2065 SQL Server 2016 향상된 즉시 파일 초기화 jevida(강성욱) 2017.01.11 2752
2064 SQL Server 2016 LDF 생성 또는 증가 시 변경된 스탬프 패턴 jevida(강성욱) 2017.01.11 2633
2063 SQL Server 2016 Tempdb 성능 향상 jevida(강성욱) 2017.01.11 4680
2062 SQL Server 2016 DBCC CHECK 작업 성능 향상 jevida(강성욱) 2017.01.11 2373
2061 Microsoft Azure - SQL Server가 포함된 가상 컴퓨터 생성하기 jevida(강성욱) 2017.01.11 1840
2060 데이터베이스에서 사용자 삭제 오류 jevida(강성욱) 2017.01.11 1303
2059 Sys.dm_exec_query_plan 에서 query_plan 컬럼의 NULL 값 반환 jevida(강성욱) 2017.01.11 1873
2058 SSMS에서 유효하지 않은 소유자로 데이터베이스 정보가 보이지 않는 증상 jevida(강성욱) 2017.01.11 1822
» SQLCMD 유틸리티 사용하기 jevida(강성욱) 2017.01.11 7754
2056 In-Memory 최적화 테이블을 사용하여 임시 테이블 및 테이블 변수 성능 향상 jevida(강성욱) 2017.01.11 4431
2055 SQL Server Job Agent는 몇 개까지 실행이 가능할까? jevida(강성욱) 2017.01.11 1756
2054 확장이벤트 사용시 주의사항 jevida(강성욱) 2017.01.11 1630
2053 Unix(Linux) timestamp(bigint) 형식을 datetime 으로 변경하기 jevida(강성욱) 2017.01.11 2902
2052 Query Rule Off를 사용한 SQL Server 옵티마이저 비활성화 jevida(강성욱) 2017.01.11 1570
2051 시스템 관리자 권한이 없는 특정 프로그램에서 Trace Flag 사용하기 jevida(강성욱) 2017.01.11 2256





XE Login