CMD명령어를 통해 파일존재여부 값을 받아서 처리해야할 경우(DIR 명령어X)
ex. 백업파일이 존재하는지 체크하기 등등..
0. D:\test.txt 파일이 있는 상태
1. CONFIGURE 설정
-- 고급 옵션이 꺼져있으면 켜주고
EXEC SP_CONFIGURE 'show advanced options', 1;
-- 설정값 동기화
RECONFIGURE;
-- 설정값을 켜주고
EXEC SP_CONFIGURE 'XP_CMDSHELL', 1;
-- 설정값 동기화
RECONFIGURE;
2. 쿼리 작성 및 실행
DECLARE @CHECK_CMD_1 VARCHAR(4000) = '' -- 1번 CMD 명령어 설정
, @CHECK_CMD_2 VARCHAR(4000) = '' -- 2번 CMD 명령어 설정
, @RC INT = 0 -- 리턴값 설정
SET @CHECK_CMD_1 = 'IF NOT EXIST ""D:\test1.txt"" echo 1' -- 파일이 없으면 ECHO 1 처리
SET @CHECK_CMD_2 = 'IF NOT EXIST ""D:\test1.txt"" 1' -- 파일이 없으면 없는 명령어를 실행하여 강제로 에러 발생 시키기 위해 1로 설정하여 처리
EXEC @RC = XP_CMDSHELL @CHECK_CMD_1 -- OUTPUT = 1
SELECT @RC -- 0 반환
EXEC @RC = XP_CMDSHELL @CHECK_CMD_2 -- OUTPUT = '1'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.
SELECT @RC -- 1 반환
3. 쿼리 실행 결과
임시테이블을 생성하여 EXEC 결과값을 임시테이블에 담아도 되지만 항상 임시테이블을 생성할 수 없으므로 위와 같은 방법으로 실행하였다.
결과 값에 따라서 0이면 정상 처리, 1이면 에러로 판단하여 원하는 처리를 할 수 있다.
'MSSQL' 카테고리의 다른 글
[MSSQL] 전체 테이블 대상으로 쿼리 실행(sp_MSforeachtable) (0) | 2024.06.28 |
---|---|
[MSSQL] 전체 DB에서 쿼리 실행(sp_MSforeachdb) (0) | 2024.06.28 |
[MSSQL] 유지 관리 계획 IP 설정 값 변경 (0) | 2024.06.21 |
[MSSQL] sp_who2 DB별 조회 (0) | 2024.06.21 |
[MSSQL] 특정 문자열 파싱 (0) | 2024.02.22 |