
기술문서
>MS SQL Server
MSSQL 데이터베이스에서 여러 데이터베이스에 일괄적인 쿼리를 실행하는 방법
![]() |
평점 | 10.0 | 라이센스 | free |
---|---|---|---|---|
사용자평점 | 10.0 | 운영체제 | ||
다운로드 | 1 | 파일크기 | 0 | |
제작사 | LUZENSOFT | 등록일 | 2025-08-16 18:10:03 | |
조회수 | 12 |
MSSQL 데이터베이스에서 여러 데이터베이스에 일괄적인 쿼리를 실행하는 방법
데이터베이스 10개를 한 번에 조회하려면 SQL Server의 시스템 저장 프로시저인 **sp_MSforeachdb
**를 사용해야 합니다. 이 프로시저는 모든 데이터베이스를 순회하며 지정된 명령어를 실행합니다.
sp_MSforeachdb
사용 방법
sp_MSforeachdb
를 사용하면 각 데이터베이스에 대한 쿼리를 반복적으로 실행할 수 있습니다. 가장 기본적인 사용법은 다음과 같습니다.
SQL
EXEC sp_MSforeachdb 'USE ?; SELECT DB_NAME() AS DatabaseName, COUNT(*) AS RowCount FROM MyTable';
위 쿼리는 각 데이터베이스에서 MyTable
의 행 수를 조회합니다. ?
는 현재 순회 중인 데이터베이스의 이름으로 자동 치환됩니다.
여러 쿼리 실행 방법
하나의 쿼리만 실행하는 것이 아니라, 여러 개의 복잡한 쿼리를 실행하려면 다음과 같이 작성할 수 있습니다.
SQL
EXEC sp_MSforeachdb '
USE ?;
-- 특정 데이터베이스에서만 실행
IF ''?'' IN (''Database1'', ''Database2'', ''Database3'')
BEGIN
SELECT
DB_NAME() AS DatabaseName,
t.name AS TableName,
c.name AS ColumnName
FROM
sys.tables AS t
INNER JOIN
sys.columns AS c ON t.object_id = c.object_id
WHERE
t.name = ''YourTableName'';
END
';
이 방법은 스키마 구조가 동일한 여러 데이터베이스를 대상으로 반복적인 작업을 수행할 때 매우 유용합니다.
sp_MSforeachdb
를 사용해 여러 데이터베이스를 대상으로 UPDATE
쿼리를 실행하는 것도 가능합니다.
이 방법은 여러 데이터베이스에 걸쳐 동일한 테이블의 데이터를 일괄적으로 수정해야 할 때 매우 유용합니다. 하지만 이 작업은 신중하게 수행해야 하며, 실행하기 전에 반드시 백업을 해두는 것이 좋습니다.
UPDATE
쿼리 사용 예시
SQL
EXEC sp_MSforeachdb '
USE ?;
-- 특정 데이터베이스에서만 실행
IF ''?'' IN (''SalesDB'', ''CustomerDB'')
BEGIN
-- MyTable의 status 컬럼을 "Completed"로 업데이트
UPDATE MyTable
SET status = ''Completed''
WHERE some_column = ''2025-01-01'';
-- 업데이트된 행의 개수 확인
PRINT ''Database: '' + DB_NAME() + '', Rows updated: '' + CAST(@@ROWCOUNT AS VARCHAR);
END
';
위 예시 코드는 'SalesDB'와 'CustomerDB' 데이터베이스에 있는 MyTable
의 status
컬럼을 일괄적으로 업데이트합니다. @@ROWCOUNT
를 사용하면 각 데이터베이스에서 몇 개의 행이 업데이트되었는지 확인할 수 있어 유용합니다.
주의 사항
트랜잭션:
sp_MSforeachdb
내부의 각 명령은 별도의 트랜잭션으로 처리될 수 있습니다. 여러 데이터베이스에 걸쳐 단일 트랜잭션을 보장하려면 별도의 트랜잭션 로직을 추가해야 합니다.성능: 많은 데이터베이스를 대상으로 복잡한 쿼리를 실행하면 상당한 시간이 소요될 수 있습니다.
에러 핸들링: 중간에 오류가 발생하면 다른 데이터베이스의 작업은 계속 진행될 수 있으므로, 에러 핸들링 로직을 추가하여 작업의 일관성을 유지하는 것이 중요합니다.
루젠VPN, #VPN추천 끝판왕! #멀티IP와 강력한 #API 지원으로 비즈니스 맞춤 최적화.
안정적이고 빠른 속도로 제한 없이 자유로운 #인터넷 경험을 선사합니다. 지금 바로 루젠VPN을 경험하세요!