티스토리 뷰

Development/MSSQL

DB정보 가져오는 쿼리

오틸라 2008. 5. 27. 14:10
반응형

DB목록
select name,dbid from master.dbo.sysdatabases
where name not in ('master','tempdb','model','msdb','pubs','northwind')
order by dbid -- defaut DB를 제외


테이블 목록
SELECT NAME FROM DBID명(ex: northwind).dbo.SYSOBJECTS WHERE TYPE='U'


테이블 변경 사항 감지
select name, xtype, schema_ver
from DBID명(ex: northwind).dbo.sysobjects
where xtype = 'u'
and schema_ver <> 0
and name ='테이블명'


컬럼 추가 : +16
컬럼 삭제 : +16
컬럼 수정
ㄱ. 컬럼명 변경 : +32
ㄴ. 컬럼 타입 변경 : schema_ver의값이 16이 됨.


테이블 컬럼 (테이블명, 테이블ID, 컬럼명, 컬럼타입, 컬럼길이, 널허용, PK)
select /*a.name as Tabl_Name, a.id as Tabl_ID,*/ 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.name
 AND K.COLUMN_NAME = B.name )
 IS NULL THEN 'N'
 ELSE 'Y' END) AS PK
from sysobjects a
 inner join syscolumns b on a.id = b.id
 inner join systypes c on b.xtype = c.xtype
where a.name = 'tb_prog'
order by a.name, b.Column_Name


STORED PROCEDURE 쿼리
SELECT * FROM SYSOBJECTS WHERE TYPE ='P' //전체 프로시져가 다 나옴
AND STATUS > 0 // status의 의미가 정확하진 않으나 내장프로시져는 값임.


SP 목록, SP 내용
SELECT so.name, sc.text FROM dbo.sysobjects so
INNER JOIN dbo.syscomments sc ON so.id = sc.id
WHERE so.type = 'p'


Index 알아 오기 ( 인덱스 명, 인덱스_description, index_keys)
SP_HELPINDEX TB_HSTR


----------------------------------------------------------------------
<참고>
DB 용량
DBCC sqlperf(logspace)


-- 유저 테이블 쿼리
SELECT NAME FROM SYSOBJECTS WHERE TYPE='U'
<- SYSOBJECTS TYPE 코드 값->
C = CHECK 제약 조건
D = 기본값 또는 DEFAULT 제약 조건
F = FOREIGN KEY 제약 조건
L = 로그
FN = 스칼라 함수
IF = 인라인 테이블 함수
P = 저장 프로시저
PK = PRIMARY KEY 제약 조건(유형은 K)
RF = 복제 필터 저장 프로시저
S = 시스템 테이블
TF = 테이블 함수
TR = 트리거
U = 사용자 테이블
UQ = UNIQUE 제약 조건(유형은 K)
V = 뷰
X = 확장 저장 프로시저

SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE &lt;&gt; 'VIEW' // view를 안나오게 하기 위하여
WHERE TABLE_TYPE = 'BASE TABLE' // 유저테이블만 나오게 하기 위하여


-- 시스템 테이블, 유저테이블 VIEW까지 전부
SP_TABLES


-- TABLE 이름을 @PARAMETER에 넣어주면 그테이블의 INDEX를 가지고 온다
SP_HELPINDEX TB_HSTR
SP_HELP TB_HSTR
SP_TABLEOPTION TB_HSTR

SP_HELPDB
(NAME |<FONT color=#000000> DB_SIZE || CREATED || STATUS
SMARTDOCU_BOK|2037.25 MB |RDSERVER\ADMINISTRATOR | 8 | 09 14 2005
|80|STATUS=ONLINE, UPDATEABILITY=READ_WRITE, USERACCESS=MULTI_USER,
RECOVERY=FULL, VERSION=539, COLLATION=KOREAN_WANSUNG_CI_AS, SQLSORTORDER=0, ISAUTOSHRINK, ISTORNPAGEDETECTIONENABLED, ISAUTOCREATESTATISTICS, ISAUTOUPDATESTATISTICS )

--Database 목록
select * from master..sysdatabases
order by name

--Database 내의 Table
/* 사용자테이블 */
select * from sysobjects where xtype = 'U' order by name

/* 시스템 테이블 */
select * from sysobjects where xtype = 'S' order by name

/* (시스템)뷰 */

select * from sysobjects where xtype = 'V' order by name

/* 저장프로시저 */

select * from sysobjects where xtype = 'P' order by name

/* 사용자정의함수 */

select * from sysobjects where xtype = 'FN' or xtype = 'TF' order by name

/* 사용자 정의 테이타 타입 */

select * from systypes where status &gt;= 3

storedProcedure가 참고하는 테이블 및 칼럼을 알고 싶을 때
sp_depends 'sp명'

반응형
댓글