'프로시저'에 해당되는 글 4

  1. 2008.06.25 숨어있는 확장 스토어드 프로시져 활용하기
숨어있는 확장 스토어드 프로시져 활용하기

 

확장 스토어드 프로시져는 SQL Server의 메모리 영역에서 직접 실행되는 DLL(dynamic link library) SQL Server Open Data Services API를 이용해 개발된 것이다. C와 같은 프로그래밍 랭귀지를 통해 본인이 원하는 확장 스토어드 프로시져를 만들 수 있다. 보통 스토어드 프로시져처럼 QA(Query Analyzer)에서 이 확장 스토어드 프로시져를 실행시켜 볼 수 있다. 확장 스토어드 프로시져는 SQL Server의 능력을 확장시키기 위해 보통 사용되는 것이다.

 

여기서는 문서화되어 있지는 않지만 사용하면 유용한 확장 스토어드 프로시져를 소개하고자 한다. SQL Server 7.0 SQL Server 2000 모두에서 잘 동작하는 것들이다.

 

sp_MSgetversion

이 확장 스토어드 프로시져는 SQL Server의 현재 버전을 알기 위해 사용된다. SQL Server의 현재 버전을 알려면 다음과 같이 실행하면 된다.

 

EXEC master..sp_MSgetversion 

 

<주의> SQL Server의 현재 버전을 알기 위한 더 좋은 방법은 select문을 사용하는 것이다:

select @@version 

 

xp_dirtree

이 확장 스토어드 프로시져는 전달된 디렉토리의 모든 서브디렉토리 리스를 얻기 위해 사용된다. 가령, C:\MSSQL7 디렉토리의 모든 서브디렉토리 리스트를 얻으려면 다음과 같이 하면 된다:

 

EXEC master..xp_dirtree 'C:\MSSQL7' 

 

xp_enum_oledb_providers

이 확장 스토어드 프로시져는 모든 OLE DB provider를 얻기 위해 사용된다. xp_enum_oledb_providers Provider Name, Parse Name Provider Description을 결과로 돌려 준다.

 

모든 OLE DB provider를 얻으려면 다음과 같이 하면 된다:

 

EXEC master..xp_enum_oledb_providers 

 

xp_enumcodepages

이 확장 스토어드 프로시져는 모든 코드 페이지, 문자 집합 및 그 설명를 얻기 위해 사용 된다. 다음은 그 예이다.

 

EXEC master..xp_enumcodepages 

 

xp_enumdsn

이 확장 스토어드 프로시져는 모든 시스템 DSN 리스트 및 그 설명을 얻기 위해 사용된다. 시스템 DSN 리스트를 얻으려면 다음과 같이 하면 된다:

 

EXEC master..xp_enumdsn 

 

xp_enumerrorlogs

이 확장 스토어드 프로시져는 마지막 변경일과 함께 모든 에러 로그 리스트를 얻기 위해 사용된다. 다음은 그 예이다.

 

EXEC master..xp_enumerrorlogs 

 

xp_enumgroups

이 확장 스토어드 프로시져는 윈도 NT 그룹과 그 설명을 얻기 위해 사용된다.

다음은 그 예이다:

 

EXEC master..xp_enumgroups 

 

xp_fileexist

이 확장 스토어드 프로시져는 디스크 상에 특정 파일이 존재하는지를 알려 준다.

문법은 다음과 같다:

EXECUTE xp_fileexist filename [, file_exists INT OUTPUT] 

 

만일 c: boot.ini 파일이 있는지 알아보려면 다음과 같이 하면 된다:

EXEC master..xp_fileexist 'c:\boot.ini' 

 

xp_fixeddrives

이 확장 스토어드 프로시져는 로컬 PC에 붙어 있는 모든 디스크 리스트와 각 하드디스크의 남은 공간을 알려 준다. 다음은 사용 방법이다:

 

EXEC master..xp_fixeddrives 

 

xp_getnetname

이 확장 스토어드 프로시져는 현재 연결되어 있는 SQL Server WINS 네임을 알려 준다. 다음은 그 예이다:

 

EXEC master..xp_getnetname 

 

xp_readerrorlog

이 확장 스토어드 프로시져는 에러 로그 파일 내용을 알려 준다. 에러 로그 파일 위치는 디폴트로 "C:\MSSQL7\Log" 디렉토리이다. 사용 방법은 다음과 같다:

 

EXEC master..xp_readerrorlog 

 

xp_regdeletekey

이 확장 스토어드 프로시져는 레지스트리 키를 삭제할 것이다. 그러므로 이 프로시져를 사용할 때는 주의를 기울여야 한다.

 

문법:

EXECUTE xp_regdeletekey [@rootkey=]'rootkey',

[@key=]'key'

 

만일 'HKEY_LOCAL_MACHINE' 'SOFTWARE\Test' 키를 삭제하려면 다음과 같이 하면 된다:

 

EXEC master..xp_regdeletekey

     @rootkey='HKEY_LOCAL_MACHINE',

     @key='SOFTWARE\Test'

 

xp_regdeletevalue

이 확장 스토어드 프로시져는 레지트스리 키의 특정 값을 삭제한다. 사용시 주의를 기울여야 한다.

 

문법 :

EXECUTE xp_regdeletevalue [@rootkey=]'rootkey',

                          [@key=]'key',

                          [@value_name=]'value_name'

 

만일 'HKEY_LOCAL_MACHINE' 'SOFTWARE\Test' 키에서 'TestValue' 값을 삭제하려면 다음과 같이 하면 된다:

 

EXEC master..xp_regdeletevalue

     @rootkey='HKEY_LOCAL_MACHINE',

     @key='SOFTWARE\Test',

     @value_name='TestValue'

 

xp_regread

이 확장 스토어드 프로시져는 레지스트리 값을 읽어 들이기 위해 사용된다.

 

문법 :

EXECUTE xp_regread [@rootkey=]'rootkey',

                   [@key=]'key'

                   [, [@value_name=]'value_name']

                   [, [@value=]@value OUTPUT]

 

만일 'HKEY_LOCAL_MACHINE' 'SOFTWARE\Test' 키에서 'TestValue' 값을 @test 변수로 읽어들이려면 다음과 같이 하면 된다:

 

DECLARE @test varchar(20)

EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',

            @key='SOFTWARE\Test',

            @value_name='TestValue',

            @value=@test OUTPUT

SELECT @test

 

xp_regwrite

이 확장 스토어드 프로시져는 레지스트리 기록을 위해 사용된다.

 

문법 :

EXECUTE xp_regwrite [@rootkey=]'rootkey',

                    [@key=]'key',

                    [@value_name=]'value_name',

                    [@type=]'type',

                    [@value=]'value'

 

만일 'HKEY_LOCAL_MACHINE' 'SOFTWARE\Test' 키에 있는 'TestValue' 값에 'Test'라고 기록하고 싶다면 다음과 같이 하면 된다:

 

EXEC master..xp_regwrite

     @rootkey='HKEY_LOCAL_MACHINE',

     @key='SOFTWARE\Test',

     @value_name='TestValue',

     @type='REG_SZ',

     @value='Test'

 

xp_subdirs

이 확장 스토어드 프로시져는 전달된 디렉토리의 서브디렉토리 리스트를 돌려 준다. xp_dirtree와는 달리 xp_subdirs detph=1인 디렉토리들만 반환한다.

 

다음과 같이 사용한다:

EXEC master..xp_subdirs 'C:\MSSQL7'

출처 : http://blog.naver.com/crabz/140028966664