TK's 컴퓨터 이야기

다수의 DB에 쿼리 일괄 처리하기. 본문

DataBase

다수의 DB에 쿼리 일괄 처리하기.

혈연 2011. 8. 11. 18:10


EXEC SP_MSFOREACHDB 'USE [?];
DECLARE @STR_SQL VARCHAR(4000)
SET @STR_SQL = ''실행시킬 쿼리''
EXECUTE(@STR_SQL)'

이 녀석을 해부해보자...

SP_MSFOREACHDB

이놈은 현재 서버에 존재하는 모든 DB에 접근할 수 있는 시스템 프로시저다.

일반적인 쿼리들은

EXEC SP_MSFOREACHDB 'USE [?]; 쿼리'

로 작업이 가능하다.

이녀석을 실행하면 서버에 존재하는 모든 DB에 접근해서 쿼리를 날려준다.

만약 저걸 그대로 복사해서 실행한다면 (물론 그럴 사람은 없겠지만...)

DB갯수만큼 줄1:'쿼리' 근처의 구문이 잘못되었습니다. 이딴식의 에러를 뱉어내겠지만 말이다.

중요한건 Create FunctionCreate Function PROCEDURE 와 같은 녀석들을 위와 같이 처리하려고 하면

'CREATE FUNCTION'은(는) 쿼리 일괄 처리에서 첫째 문이어야 합니다.

이런 식의 에러를 접하게 된다.

이럴때는 맨 위에 기술해 놓은 방법처럼 2중으로 쿼리를 작업해주면 문제없이 쿼리를 날릴 수 있다.

이런 방식을 사용할 필요가 있는 사람이 얼마나 될까마는 나에게는 아주 중요한 쿼리다. : )

'DataBase' 카테고리의 다른 글

0 나누기 에러  (0) 2014.01.16
SQL 2005부터 지원하는 Paging 기능 "row_number()"  (0) 2012.07.25
xp_cmdshell 과 sql_injection  (0) 2012.06.25
MS-SQL Table Lock Check !  (0) 2012.03.09
DB 용량 줄이기(Data, Log)  (0) 2011.12.20