SQLSERVER 에는 다양한 시스템 테이블이 있으며, 이걸 활용하면 많은 노가다(?)성 일들을 줄일 수가 있다.

그중에 데이터베이스안에 있는 사용자 테이블의 데이터를 모두 삭제할 때 해당 쿼리를 얻는 방법이다.


SELECT * FROM SYS.SYSOBJECTS

-- 해당 쿼리를 실행해보면 다양한 오브젝트의 정보를 얻을 수 있다.


그렇다면 DELETE 쿼리를 얻기 위해 아래와 같이 응용할 수가 있다.

SELECT 'DELETE FROM ' + [NAME] FROM SYS.SYSOBJECTS WHERE [xtype] = 'U' 

-- 해당 쿼리를 실행하면 결과는 DELETE 쿼리 목록이 조회 된다. 즉 노가다를 줄일 수 있다.!

-- U 는 사용자 테이블만 조회하기 위한 조건이다.


- xtype 의 종류

AF = 집계 함수(CLR)
C = CHECK 제약 조건
D = 기본값 또는 DEFAULT 제약 조건
F = FOREIGN KEY 제약 조건
L = 로그
FN = 스칼라 함수
FS = 어셈블리(CLR) 스칼라 함수
FT = 어셈블리(CLR) 테이블 반환 함수
IF = 인라인 테이블 함수
IT = 내부 테이블
P = 저장 프로시저
PC = 어셈블리(CLR) 저장 프로시저
PK = PRIMARY KEY 제약 조건(K 유형)
RF = 복제 필터 저장 프로시저
S = 시스템 테이블
SN = 동의어
SQ = 서비스 큐
TA = 어셈블리(CLR) DML 트리거
TF = 테이블 함수
TR = SQL DML 트리거
TT = 테이블 유형
U = 사용자 테이블
UQ = UNIQUE 제약 조건(K 유형)
V = 뷰
X = 확장 저장 프로시저


아래의 링크를 통해 좀더 sys.sysobjects 에 대해서 자세히 살펴볼 수 있다.

MSDN 의 sys.sysobjects 설명 링크

'IT > 데이터베이스' 카테고리의 다른 글

mssql recovery mode 확인 및 변경  (0) 2014.11.25

+ Recent posts