2015. 7. 18. 19:37

출처 : http://abacus.tistory.com/176


MS SQL 2000 에서 정보를 보는 쿼리들
 
해당 DB에 어떤 Table들이 있는지, Table이 변경되었는데 무엇이 변경되었는지, 해당 DB에 어떠한 프로시저들이있는지를 한 눈에 볼 수 있는 쿼리들이다.  아주 쬐금 유용하게 쓰인다. ^^;

 

 DB 목록 보기

--목록중에 시스템 데이터베이스는 제외시키기

Select

    [name]

  , [dbid]

From Master.dbo.sysdatabases

Where [name] not in ('master''tempdb''model''msdb')

Order by dbid

 

 

 DB에 존재하는 Table 목록 보기

Select

    [name]

From dbID명(ex:master).dbo.sysobjects Where [xtype] = 'U'

 

 

 Table 변경 사항 감지

Select

    [name]

 ,  [xtype]

 ,  [schema_ver]

From dbID명(ex:master).dbo.sysobjects

Where [xtype] = 'U'

   And [schema_ver] <> 0

   And [name] = '테이블명' 

컬럼 추가 : + 16

컬럼 삭제 : + 16

컬럼 수정

    ㄱ. 컬럼명 변경 : + 32

    ㄴ. 컬럼 타입 변경 : + 16

 

 

Table - Columns

Select

    b.name As Column_Name

  , c.name As data_type

  , b.length

  , b.isnullable

  , (Case When

        (Select Distinct(k.column_name)

          From Information_schema.key_column_usage AS k

          Where k.Table_name = A.nam And k.column_name = b.name

        ) Is Null Then 'N' Else 'Y' End

     As PK

From sys.sysobjects a

       Inner join syscolumns b On a.id = b.id

       Inner join systypes c On b.xtype = c.xtype

Where a.name = '테이블명'

Order BY a.name, b.name

 

-- 아래와같이 출력 된다.

-- 이 버전 말고 후에 다른 버전을 올릴 생각이다. 

 

  

Stored Procedure Query

--해당 DB의 모든 사용자 프로시저가 출력된다.

Select * From sysobjects Where type = 'P'

 

 

Stored Procedure 목록, Stored Procedure 내용

--해당 DB의 모든 사용자 프로시저 및 그 프로시저의 내용이 출력된다.

Select

    so.[name]
  , sc.[text]
From dbo.sysobjects As so Inner Join dbo.syscomments As Sc
On so.id = sc.id
Where so.[type] = 'P'

 

 

sysobject xtype 정의

C = Check 제약 조건

D = 기본값 또는 Default 제약 조건

F = Foreign Key 제약 조건

L = 로그

FN = 스칼라 함수

IF = 인라인 테이블 함수

P = 저장 프로시저

PK = Primary Key 제약 조건

RF = 복제 필터 저장 프로시저

S = 시스템 테이블

TF = 테이블 함수

TR = 트리거

U = 사용자 테이블

UQ = Unique 제약 조건

V = 뷰

X = 확정 저장 프로시저

--해당 정의는 MSSQL 2000에서 유용한것이고, 2005 부터는 type의 목록이 조금 추가가 되었다.

--또한 2005부터는 sysobject 가 아닌 sys.object 를 쓰기 바란다.

--sysobject 는 이전버전과 호환성을 위해 포함된 뷰이고

--sys.object는 sysobject를 대신하는 시스템뷰이다.

Posted by 팔개