728x90

확장 저장 프로시저는 SQL Server가 동적으로 로드하고 실행할 수 있는 동적 연결 라이브러리(DLL)이다. 확장 저장 프로시저는 SQL Server 주소 공간에서 실행되며, SQL Server 개방형 데이터 서비스(Open Data Services) API를 사용하여 만들 수 있다. 쿼리 분석기에서 일반 저장 프로시저와 같이 확장 저장 프로시저를 실행할 수 있다. 확장 저장 프로시저를 사용하면 SQL Server의 기능을 확장할 수 있다. SQL Server와 함께 제공되거나 C 나 C++과 같은 프로그래밍 언어로 직접 작성한 많은 저장 프로시저를 통해 많은 이점을 취할 수 있다.

이 글에서는 몇몇 문서화 되지 않은 확장 저장 프로시저에 대해 이야기를 할 것이다. 이 확장 프로시저들은 SQL Server 7.0이나 SQL Server 2000에서 동작한다.


■ sp_MSgetversion
이 확장 저장 프로시저는 SQL Server의 현재 버전을 반환한다. SQL Server 버전을 확인하기 위해서는 아래와 같이 실행할 수 있다.


EXEC master..sp_MSgetversion
 -- 결과 Character_Value
-------------------- ----------- -----------
                  8.00.760             1           2 
-- 참고: SQL Server의 현재 버전을 구하는 보다 보편적인 방법은
-- 다음 SELECT 구문을 이용하는 것이다.
SELECT @@version

■ xp_dirtree
이 확장 저장 프로시저는 특정 폴더 하위에 존재하는 모든 폴더의 목록을 반환한다. C:\MSSQL7 폴더 하위에 존재하는 모든 폴더의 목록을 구하기 위해서는 아래와 같이 실행하면 된다.


EXEC master..xp_dirtree 'C:\MSSQL7'

■ xp_enum_oledb_providers
이 확장 저장 프로시저는 사용가능한 모든 OLE DB 공급자 리스트를 반환한다. 제공자 이름과 Parse Name, 설명을 함께 보여준다. SQL Server에서 OLE DB 공급자 리스트를 구하기 위해서는 아래와 같이 실행하면 된다.


EXEC master..xp_enum_oledb_providers
GO
-- 결과
Provider Name              Parse Name           Provider Description
-------------------------- -------------------- ----------------------------------------------------
SQLOLEDB                   {0C7FF16C-38E3-...}  Microsoft OLE DB Provider for SQL Server
DTSPackageDSO              {10010031-EB1C-...}  Microsoft OLE DB Provider for DTS Packages
SQLReplication.OLEDB       {10010100-D8C9-...}  SQL Server Replication
OLE DB Provider for DTS Microsoft.ISAM.OLEDB.1.1   {1cf650fc-2ff0-...}  Microsoft ISAM 1.1 OLE DB Provider
MSDMine                    {2CB6C2D3-DD7C-...}  Microsoft OLE DB Provider For Data Mining Services EMPOLEDB
VS71.1             {53544C4E-1DD6-...}  VSEE Versioning Enlistment Manager Proxy Data Source
ADsDSOObject               {549365d0-ec26-...}  OLE DB Provider for Microsoft Directory Services
MSOLAP                     {a07ccd00-8148-...}  Microsoft OLE DB Provider for OLAP Services
MSOLAP                     {a07ccd0c-8148-...}  Microsoft OLE DB Provider for Olap Services 8.0
MSDAIPP.DSO                {AF320921-9381-...}  Microsoft OLE DB Provider for Internet Publishing . . .

■ xp_enumcodepages
이 확장 저장 프로시저는 SQL Server의 모든 코드 페이지, 문자셋, 문자 집합과 그것들의 설명을 반환한다. 모든 코드 페이지, 문자셋의 목록을 구하기 위해서는 아래와 같이 실행하면 된다.

EXEC master..xp_enumcodepages
GO
-- 결과
ode Page   Character Set   Description
----------- -------------- -----------------------
708         ASMO-708       아랍어(ASMO 708)
720         DOS-720        아랍어(DOS)
28596       iso-8859-6     아랍어(ISO)
1256        windows-1256   아랍어(Windows)
1257        windows-1257   발트어(Windows)
852         ibm852         중앙 유럽어(DOS)
28592       iso-8859-2     중앙 유럽어(ISO)
1250        windows-1250   중앙 유럽어(Windows)
936         gb2312         중국어 간체(GB2312)
52936       hz-gb-2312     중국어 간체(HZ) . . .

■ xp_enumdsn
이 확장 저장 프로시저는 모든 시스템 DSN과 설명을 반환한다. 모든 시스템 DSN의 목록을 구하기 위해서는 아래와 같이 실행하면 된다.


EXEC master..xp_enumdsn

■ xp_enumerrorlogs
이 확장 저장 프로시저는 마지막 수정일을 포함하는 오류 로그의 목록을 반환한다. 오류 로그의 목록을 구하기 위해서는 아래와 같이 실행하면 된다.


EXEC master..xp_enumerrorlogs
GO  -- 결과 보관 #        날짜로그         파일 크기(바이트)  ----------- ------------------ -------------  0           09/30/2003  16:46  5406 1           09/25/2003  10:52  4437 2           09/25/2003  10:14  4521 3           09/21/2003  22:00  5220 4           09/18/2003  18:57  4570 5           09/18/2003  16:55  4493 6           09/17/2003  22:44  5514

■ xp_enumgroups
이 확장 저장 프로시저는 모든 Windows NT 그룹명과 설명을 반환한다.


EXEC master..xp_enumgroups GO  -- 결과 group                comment -------------------- ---------------------------------------------------------------------- Administrators       컴퓨터/도메인에 모든 액세스 권한을 가진 관리자 Backup Operators     파일을 백업하거나 복원하기 위해 보안 제한을 변경할 수 있는 백업 관리자 Guests               기본적으로 사용자 그룹의 구성원과 동일한 권한을 가진 게스트(별도의 ... Power Users          일부 권한을 제외한 관리자 권한을 가진 고급 사용자. 인증된 응용... Replicator           도메인에서 파일 복제 지원 Users                시스템 관련 사항을 변경할 수 없는 일반 사용자. 따라서 인증된 응용 ... . .

■ xp_fileexist
xp_fileexist 확장 저장 프로시저를 이용하여 디스크 상에 저장된 특정 파일이 실제로 존재 하는지 안 하는지 알아볼 수 있다.


문법 EXECUTE xp_fileexist filename [, file_exists INT OUTPUT]  -- 다음은 boot.ini 파일이 C:\에  존재하는지 알아보는 예제. 
EXEC master..xp_fileexist 'c:\boot.ini' GO  -- 결과 파일이 있 파일이 디렉 상위 디렉  --------- ----------- --------- 1         0           1  * 주: 반환되는 결과의 컬럼명이 짤려 보인다. "파일이 있"는 "파일이 있는가?" 정도로 보면 될것이다. 인수로 지정한 파일이 존재하면 1, 존재하지 않으면 0을 출력한다. "파일이 디렉" 칼럼은 "파일이 디렉토리 인가?" 정도로 보면 된다. 인수로 파일 뿐 아니라 디렉토리 명을 줄 수 있다.(예:xp_fileexist 'c:\inetpub') 이것도 마찬가지로 디렉토리이면 1, 디렉토리가 아니면을 0을 출력한다.

■ xp_fixeddrives
xp_fixeddrives 확장 저장 프로시저는 매우 유용한데, 시스템 상의 모든 하드 디스크 드라이브에 대해 각각의 남은 용량을 메가바이트(Mb) 단위로 출력해 준다.


EXEC master..xp_fixeddrives
GO 
-- 결과 drive MB 비어 있음    

----- ----------- 
C     11023 D     14050

■ xp_getnetname
xp_getnetname 확장 저장 프로시저는 접속중인 SQL Server의 이름을 반환한다.


EXEC master..xp_getnetname

■ xp_readerrorlog
xp_readerrorlog 확장 저장 프로시저는 오류 로그 파일의 내용을 보여준다. SQL Server 7.0 에서는 오류 로그 파일이 디폴트로 C:\MSSQL7\Log 디렉토리에 저장된다. (주:SQL Server 2000은 C:\Program Files\Microsoft SQL Server\MSSQL\log)


EXEC master..xp_readerrorlog
 GO 
-- 결과
 ERRORLOG                                                                               ContinuationRow 
-------------------------------------------------------------------------------------- --------------- 
2003-09-26 15:18:29.45 server    Microsoft SQL Server  2000 - 8.00.760 (Intel X86)     0  
Dec 17 2002 14:22:05                                                        0  
Copyright (c) 1988-2003 Microsoft Corporation                               0  
Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 3)             0
2003-09-26 15:18:29.53 server    Copyright (C) 1988-2002 Microsoft Corporation.        0
2003-09-26 15:18:29.53 server    All rights reserved.                                  0
2003-09-26 15:18:29.53 server    서버 프로세스 ID는 724입니다.                         0
2003-09-26 15:18:29.53 server    'C:\Program Files\Microsoft SQL Server\MSSQL\log...   0
2003-09-26 15:18:29.83 server    SQL Server가 우선 순위 클래스 ''normal''(1 CPU ...    0
 2003-09-26 15:18:31.16 server    SQL Server가 thread 모드 처리를 위해 구성되었습니다.  0
2003-09-26 15:18:31.18 server    dynamic 잠금 할당을 사용하는 중입니다. [2500]...      0
2003-09-26 15:18:31.27 server    분산 트랜잭션 코디네이터를 초기화하는 중입니다.       0
2003-09-26 15:18:33.26 server    Failed to obtain TransactionDispenserInterface:.....  0
2003-09-26 15:18:34.35 spid3     'master' 데이터베이스를 시작하는 중입니다.            0
2003-09-26 15:18:37.44 spid3     0개의 트랜잭션이 'master'(1) 데이터베이스에서 롤백... 0 . .

■ xp_regdeletekey
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
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
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
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_subdirs 확장 저장 프로시저는 특정 폴더 하위에 존재하는 모든 폴더의 목록을 반환한다. xp_dirtree와 와는 달리, xp_subdirs는 지정한 디렉토리의 바로 하위에 존재하는 디렉토리(depth = 1)만 보여준다.


EXEC master..xp_subdirs 'C:\MSSQL7'

문서화되지 않은 이 확장 저장 프로시저들은 Microsoft에 의해 공식적으로 지원되지 않으며 SQL Server의 다음 버젼에서 존재하지 않을 수도 있음을 유념해야 한다.

+ Recent posts