MSSQL

[MSSQL] 전체 DB에서 쿼리 실행(sp_MSforeachdb)

띠옹떼옹 2024. 6. 28. 14:00

sp_MSforeachdb 를 사용하면 된다.

 

사용예시

 

1. 모든 db에서 test라는 이름을 포함한 테이블을 찾아야하는 경우 아래와 같이 실행하면 된다. 

exec sp_MSforeachdb 'use [?]; select ''?'', * from sys.tables where name like N''%test%'''

 

?에는 순차적으로 db명이 들어간다.

select 절에 '?' 를 추출하는 이유는 어떤 db인지 알기 위해 추가했다.

 

2. 사용자 데이터베이스(온라인 상태만) 전체 백업하기

exec sp_msforeachdb 'IF EXISTS(SELECT 1 FROM SYS.DATABASES WHERE NAME = ''?'' AND DATABASE_ID > 4 AND STATE = 0)
BACKUP DATABASE [?] TO DISK = "D:\test\?_230628.bak"  WITH INIT, STATS = 10;'

 

3. DB 사용자 SID 값 맵핑

exec sp_msforeachdb 'use [?]; exec sp_change_users_login ''Update_One'',''sa'',''sa'''