본문 바로가기

MSSQL/T-SQL

모든테이블 삭제하기


모든 테이블 삭제하기 ㅋㅋㅋ
아~~!! 왜 난 쓸데없이 이런것만 쓰게 되는 것일까 -0-;;

그냥 이것저것 채우려는 마음이 급해서 특별한것도 아닌 글들을 올리는가 부다 ^^;;
하지만, 혹시나 모르는 분들이 계실까봐.. 용기내어 적어봅니다.

문서화 되지 않은 저장프로시저 란?
문서화 되지 않은 저장프로시저 란? 말 그대로 BOL에서 찾아보아도 없는 명령어 입니다.
언제 없어져도 이상할 것이 없는 명령어들이라는 말이죠 ^^;; (아놔!! 근데 왜 만들었데~~!!) 글쎄요 MS사에서 왜 어떠한 목적으로 만들었고 왜 없애려고 하는지는 적확히 모르겠습니다만, 그중에 몇가지 유용한(?) 쓰기에 편리한것이 있어 소개해 보려고 합니다.

sp_MsForEachDB
이 명령어는 무엇을 하는 명령어이냐 하면, 시스템상의 모든 데이터베이스의 목록을 얻어오는 명령어 입니다. 설명이 부족하여 무슨 소리인지 모르겠죠 ^^;; 그럼 아래와 같이 한면 입력하고 F5를 눌러주세요.

-- 시스템상의 데이터베이스 목록 출력하기
exec sp_MsForEachDB 'print ''?'''

이렇게 직접 해보시면, 시스템에 생성되여 있는 모든 데이터베이스의 목록이 출력이 됩니다. 많은 분들아 '아~! 이것을 이렇게 쓰면 편하겠구나' 라고 생각하셨을지도 모르겠습니다.

-- 모든 데이터베이스 체크하기
exec sp_MsForEachDB 'DBCC CHECKDB (?)'

-- 모든 데이터베이스 삭제하기
-- 실무에서 실행시키지마세요. 어디까지나 TEST

exec sp_MsForEachDB 'DROP DATABASE [?]'

sp_MsForEachTable

다음으로 이 명령어 눈치가 빠르신분들은 위에서 본 sp_MsForEachTable명령어와 똑같다고 생각을 하셨을 겁니다.
맞습니다.
위에 명령어는 모든 테이터베이스의 목록을 가져오는것이고, 이 명령어는 해당 데이터베이스의 모든 테이블을 가지고 오는 명령어 입니다.

-- 해당 데이터베이스의 모든 테이블 삭제하기
exec sp_MsForEachTable 'DROP TABLE ?'

방금 TESTDB에서 위 명령어로 깔끔하게 모든 테이블을 지웠습니다.
"참~! 좋죠~!"

마치며
별로 중요하지 않은것 같지만 나름대로 실무에서 적재적소에 쓰이고 합니다.
근데, 우스운것이 '문서화 되지 않은 명령어는 다음 버전이나 언제 삭제될지 모르니 책임을 지지 않고 이 점을 유념하여 사용바랍니다'하는데 2008의 인텔리젼스 기능을 사용하다보면 해당 문서화 되지 않은 명령어들이 쭈루룩~~!!

"참~! 어이없죠~!"


----------------------------------------------------------
DBA 이승연
GRAVITY co., Ltd 
Global Business Dept / Tech Support

http://www.gravity.co.kr
http://www.ddoung2.com
----------------------------------------------------------

'MSSQL > T-SQL' 카테고리의 다른 글

GROUP BY에 대하여  (0) 2009.04.28
SELECT절 집계 함수  (0) 2009.04.28
SQL에서의 관계대수  (0) 2009.04.28
데이터형식 우선 순위  (0) 2009.03.27
공백을 구분하여 문자열 자르기  (0) 2009.03.26