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
리커버리 모드확인
오라클과는 다르게 mssql 의 로그레벨은 세가지가 있다
full, bulk_logged, simple 이다.
필요에 따라 해당 모드의 조정이 필요하거나 확인은 다음과 같다.

 SELECT name AS [Database Name],

 recovery_model_desc AS [Recovery Model]
 FROM sys.databases

 ALTER DATABASE [Database Name] SET RECOVERY SIMPLE  // simple 모드로
 ALTER DATABASE [Database Name] SET RECOVERY BULK_LOGGED // bulk_logged모드로
 ALTER DATABASE [Database Name] SET RECOVERY FULL    // full 모드로


단순한 데이터, 속도가 중요하다면 simple 모드를

복구가 가능하기를 원하고(단 특정 시점으로는 안됨) 미러링이 필요없다면 bulk_logged 모드를

복구 및 미러링이 필요하다면 full 모드를 사용하면 된다.



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

[MS-SQL] 모든 테이블 데이터 지우기  (0) 2017.03.23

+ Recent posts