DB

[mssql] sqlcmd 파일 자동 실행 배치 스크립트(절대경로 가져오는 방법)

도스 프롬프트에서 sqlcmd  명령어 사용하면 명령 프롬프트, SQLCMD 모드의 쿼리 편집기, Windows 스크립트 파일 또는 SQL Server 에이전트 작업의 운영 체제(Cmd.exe) 작업 단계에서 Transact-SQL 문, 시스템 프로시저 및 스크립트 파일을 입력할 수 있습니다. SQLCMD는 OLE DB를 사용하여 Transact-SQL 일괄 처리를 실행합니다.

 

프로시저 또는 뷰 , 함수 등의 스크립트를 일괄로 실행하고 싶을 때 사용하면 유용합니다.

 

cmd창에서 sqlcmd 명령어를 실행했을 때 찾지 못한다면 별도로 설치를 해주어야 합니다.

아래링크에서 운영체제에 맞는 파일을 다운받아 설치합니다.


https://docs.microsoft.com/ko-kr/sql/tools/sqlcmd-utility?view=sql-server-ver16 

 

sqlcmd 유틸리티 – SQL Server

sqlcmd 유틸리티를 사용하면 다양한 모드를 사용해 Transact-SQL 문, 시스템 프로시저 및 스크립트 파일을 입력할 수 있습니다. 이 유틸리티는 ODBC를 사용하여 Transact-SQL 일괄 처리를 실행합니다.

docs.microsoft.com

 

오늘 날짜 기준으로 변경된 파일 자동 실행(절대경로 필요없는 경우)

@Echo Off

set /p id="Database PASSWORD : "

FOR /f %%i IN ('forfiles /S /M *.sql /D 0') do call :RunScript %%i

PAUSE
GOTO :END

 

:RunScript

Echo Executing %1

SQLCMD -S 192.168.0.1CRM -U crmsa  -P %id% -i %1

Echo Completed %1

:END

 

SQLCMD 당일 변경된 파일만 자동 실행( 변경된 파일의 절대경로를 함께 가져오는 방법)

@Echo Off

FOR /f %%i IN ('forfiles /S /M *.sql /D 0 /C "cmd /c echo @path"') do call :RunScript %%i

PAUSE
GOTO :END

 

:RunScript

Echo Executing %1

SQLCMD -S 192.168.0.1,2433 -i %1

Echo Completed %1

:END

[ SQLCMD 구문]

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]

 

sql 파일명 일괄 치환

powershell -Command "& {Get-ChildItem -Filter "*.sql" -Recurse | Rename-Item -NewName {$_.name -replace '.Synonym',''}}
powershell -Command "& {Get-ChildItem -Filter "*.sql" -Recurse | Rename-Item -NewName {$_.name -replace '.StoredProcedure',''}}
powershell -Command "& {Get-ChildItem -Filter "*.sql" -Recurse | Rename-Item -NewName {$_.name -replace '.UserDefinedFunction',''}}
powershell -Command "& {Get-ChildItem -Filter "*.sql" -Recurse | Rename-Item -NewName {$_.name -replace '.view',''}}

pause

 

[REFERENCE]

 

sqlcmd 유틸리티

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

docs.microsoft.com

 

 

Leave a Reply

error: Content is protected !!