Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 윈도우 usb 설치
- MDF 용량
- 7설치
- EnableIEHosting
- 매력있어
- 어세신
- ms-sql 2008 설치 실패
- TABLE LOCK
- 상태값
- DBCC
- 파일접근
- 악동뮤지션
- 시스템폴더
- 폴더접근
- 반환값
- SCSI서버
- 0나누기 에러
- SAS 서버
- DB 용량 줄이기
- CS5.5 설치 실패
- INPUTBUFFER
- 드래곤플라이트
- Log 줄이기
- CS5 설치 실패
- 권한얻기
- .NET Framework 4.5
- 설치 실패
- LDF 용량
- smartclient
- 백업 용량
Archives
- Today
- Total
TK's 컴퓨터 이야기
다수의 DB에 쿼리 일괄 처리하기. 본문
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 Function나 Create 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 |