켄 핸더슨의 책에 나와 있는 것중 그중 몇가지 쓸만한 것만 모아 보았습니다. (bleujin 개인적 판단)

문서화 하지 않은 이유는 크게 2가지가 있습니다.

1) 위험하다

2) 지원을 보장하지 않는다.

 

아주 예전에 김정선님과 이와 관련하여 얘기한 적이 있는데

개인적 판단은 이러한 것은 굳이 숨기는 것보다 사용자에 달린 문제라고 생각합니다.

(사실 알지 못하더라도 약간 귀찮을 뿐입니다. 세상과 마찬가지로 대체물이라는 것이 존재하니까요. )

 

 

 

특정한 dbName이 없으면 Northwind Sample DB를 사용했습니다.

 

 

1. guid column

오라클의 경우 의사컬럼인 rowid가 있는데 PL/SQL 프로그래밍을 할때(특히 Clob 컬럼) 종종 유용하게 쓰입니다.

 

문법 : sp_MSaddguidcolumn @owner, @table

사용예 : sp_MSaddguidcolumn dbo, orders

 

해당 테이블에 rowguid 컬럼이 추가됩니다. 이 컬럼은 해당 row의 id 입니다. 8-4-4-4-12자리로 되어 있는데 해석이 안됩니다-_-

FileName, DbName, ObjectName, Row Location 등의 정보를 가지고 있으므로 해당 값은 최소한 해당 MSSQL 서버 내에서는 Unique 합니다.

그러나 오라클의 Clob 타입과 달리 MSSQL의 TSQL  프로그래밍을 할때 써먹어 볼려구 머리 굴려봤지만 써먹어 본적은 아직 없습니다-_-

 

참고 : sp_MSaddguidindex @owner

@owner, @table 해당 테이블 guid 컬럼에 인덱스를 만듭니다.

 

 

 

2. error log 보기

 

서버에 현재 있는 오류 로그 파일들의 목록을 보여줍니다.

문법 및 예제 : master..sp_enumerrorlogs

참고 : master..xp_enumerrorlogs 와 같다.

 

오류 로그의 내용을 보여준다. lognum을 지정하지 않으면 현재 오류 로그를 보여준다.

문법 : sp_readerrorlog [@lognum]

예제 : sp_readerrorlog

참고 : master..xp_readerrorlog [@lognum]와 같다.

 

 

 

3. 파일 관련

 

지정한 경로의 모든 하위의 서브 디렉토리를 해당 디렉터리의 노드레벨 정보와 함께 보여준다.

문법 : xp_dirtree 'rootpath'

예제 : master..xp_dirtree 'c:\' (좀 많이 느리다-_-)

 

지정한 경로의 바로 하위에 있는 서브 디렉토리의 이름을 반환한다.

문법 및 예제 : master..xp_subdirs 'c:\'

 

파일 존재 여부를 알려준다.

문법 : xp_fileexist 'filename'

예제 : master..xp_fileexist 'c:\winnt\odbc.ini'

 

현재 시스템의 고정 Drive를 보여준다.

문법 및 예제 : master..xp_fixeddrives

 

특정 파일에 대하여 자세한 정보를 알려준다.

문법 및 예제 : master..xp_getfiledetails 'c:\winnt\odbc.ini'

 

서버 컴퓨터의 네트워크 이름을 반환한다.

문법 및 예제 : master..xp_getnetname

 

레지스트리 키에 있는 값들을 보여준다.

문법 및 예제 : Exec master..xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer'

참고 : 레지스트리 키를 추가 / 수정 / 삭제 하는 xp_regaddmultistring, xp_regdeletekey, xp_regdeletevalue, xp_regread, xp_regremovemultistring, xp_regwrite 등도 있다.

 

 

 

4. 테이블 정보

오브젝트의 종속성을 보여준다.

문법 : sp_MSdependencies @objname, @objtype, @flags int, @objlist

사용예 : sp_MSdependencies 'orders'

 

테이블이 참조하는 오브젝트 또는 그 테이블을 참조하는 오브젝트를 보여준다.

문법 : sp_MStablerefs @tablename, @type, @direction, @reftable

예제 : sp_MStablerefs 'Orders'

 

테이블 공간 정보를 보여준다.

문법 : sp_MStablespace @tablename

예제 : sp_MStablespace 'Orders'

 

5. Batch

 

시스템 상의 모든 데이타베이스에 대하여 세개의 명령어를 실행한다.

문법 : sp_MSforeachdb @command1 @replacechar = '?' [, @command2] [, @command3] [, @precommand] [, @postcommand]

예제 : Exec sp_Msforeachdb @command1 = 'PRINT ''LISTING ?''', @command2 = 'USE ? Select DB_Name()'

 

배치 Script를 만들때 쓸만하다. @precommand와 @postcommand은 일종의 Junit의 setUp()과 tearDown() 역할을 한다.

 

참고 : 현재 DB의 모든 테이블에 대해서 세개의 명령어를 실행하는 것두 있다.

문법 : sp_MSforeachtable @command1 @replacechar = '?' [, @command2] [, @command3] [,@whereand] [, @precommand] [, @postcommand]

예제 : sp_Msforeachtable @command1 = 'Exec sp_help [?]' , @whereand = ' And name like ''%c%'''

@whereand는 테이블을 선택적으로 제한할 수 있다.

 

 

 

6. 기타

 

인덱스의 크기 정보를 보여준다. MS 가 통계 정보를 기초하여 지맘대-_-로 만든 _WA_Sys_columnanme.... 등의 인덱스도 보여준다.

문법 : sp_MSindexspace @tablename [, @indexname]

예제 : sp_MSindexspace 'Orders'

  

 

Tempdb db 에 대한 공간 사용정보를 반환한다.

문법 및 예제 : sp_tempdbspace

 

DB Control

문법 : DBCC DBControl(dbname, option)

예제 : DBCC DBControl ('Northwind', single)

single(single-user 모드로 지정한다. ), multi(multi-user 모드로 지정한다.), online, offline, readonly, readwrite 등의 옵션이 있다.

 

현재 Error log를 닫고 새로운 error log를 시작한다.

문법 및 예제 : DBCC Errorlog

 

데이타 베이스에 있는 모든 저장 프로시저를 재컴파일한다. (View나 테이블에 컬럼을 추가 하는 등의 변경이 일어났을 경우 유용하다. )

문법 : DBCC FlushProcInDB( @dbid )

예제 :

Declare @dbId int

Set @dbid = DB_ID('Northwind')

DBCC FlushProcInDB( @dbid )

 

DBCC 명령문의 사용법에 대한 정보를 보여준다. (명령어의 의미는 보여주지 않는다. )

문법 : DBCC Help(명령어)

예제 : DBCC Help(TraceOn)

 

해당 데이테베이스의 트랜잭션 로그 레코드 정보를 보여준다. (나름대로 꽤 유용)

문법 : DBCC LOG (@dbname)

예제 : DBCC Log('pubs')

 

SQL 서버 Memory 정보를 보여준다.

문법 및 예제 : DBCC MemoryStatus

 

그밖에 정원혁님의 SQL Server 2000 Internal 온라인 강의에 DBCC 명령어 몇개가 나온다.

 

 

 

앞에서도 말했듯이 켄 헨더슨의 책에 나와 있는 걸 굳이 옮긴 이유는

SQL Server로 할수 있는 프로그래밍 영역이 일반적으로 알려져 있는 것보다 넒다라는 얘기를 하기위해서..

 

안정적인 DNS서비스 DNSEver DNS server, DNS service
Posted by 키르히아이스
,