sp_MSforeachdb, sp_MSforeachtable 프로시저 활용
master 데이터베이스는 sp_MSforeachtdb, sp_MSForeachtable 과 같은 유용한 Stored Procedure가 있습니다.
[sp_MSforeachdb]
sp_MSforeachdb 프로시저는 SQL Server 인스턴스 내에 있는 모든 데이터베이스의 이름을 반환하며 이 이름을 참조하여 지정된 반복문을수행합니다..
아래 스크립트는 인스턴스내의 모든 데이터베이스의 helpfile 정보를 보여줍니다..
use master go
exec sp_MSforeachdb 'use ? exec sp_helpfile' |
[sp_MSforeachtable]
sp_MSforeachtable 프로시저는 현재 데이터베이스 내의모든 테이블 이름을 반환하며 이 테이블이름을 참조하여 지정된 반복문을 수행 한다.
아래 스크립트는 해당 데이터베이스에 존재하는 모든 테이블의 row count를테이블에 삽입하여 출력한다.
begin try create table #rowcount (tablename varchar(128), rowcnt int) end try begin catch end catch
exec sp_MSforeachtable 'insert into #rowcount select ''?'', count(*) from ?' select top 5 * from #rowcount order by tablename drop table #rowcount |
위의 두 시스템 프로시저를 잘 활용하면 사용자 프로시저 생성시 코드를 간결하고 빠르게 개발 할 수 있을 듯 하다.
[참고자료]
l http://www.codeproject.com/Articles/459536/SQL-Server-Applying-Filter-on-sp_MSforeachDB#
'SQL Server' 카테고리의 다른 글
MS SQL Server 2008 R2에서 Collation 변경하기 (0) | 2014.03.22 |
---|---|
시스템 테이블을 이용한 Table Names, Column Names, Data Types 조회 (0) | 2014.03.13 |
모든 DB 테이블에서 특정값을 찾는 프로시저 (0) | 2014.03.13 |
모든 DB 테이블에서 특정값을 찾고 변경하는 프로시저 (0) | 2014.03.13 |
SQL Server db lock 확인 방법 (0) | 2013.09.24 |