티스토리 뷰
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 <> '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 >= 3
storedProcedure가 참고하는 테이블 및 칼럼을 알고 싶을 때
sp_depends 'sp명'