Не документированные расширенные хранимые процедуры SQL Server 7.0/2000

ПУБЛИКАЦИИ  

По материалам статьи Alexander Chigrik на swynk.com «Useful undocumented extended stored procedures»

Александр пишет, что расширенные хранимые процедуры – это DLL, которые выполняются непосредственно в адресном пространстве SQL сервера и используют SQL Server Open Data Services API. Вы можете написать собственную расширенную хранимую процедуру на языке программирования C. Вы можете выполнять расширенные хранимые из Query Analyzer, как обычные хранимые процедуры. Расширенные хранимые процедуры используются для расширения возможностей SQL сервера.
В этой статье, Александр представляет некоторых полезные, не документированные расширенные хранимые процедуры, которые Вы можете использовать при работе с SQL Server 7.0/2000.

Sp_Msgetversion

Эта хранимая процедура используется для получения текущей версии SQL сервера. Пример её использования:

EXEC master..sp_MSgetversion

Примечание. Между прочим, более распространённый способ получения текущей версии SQL сервера (выдаётся большее количество информации), это использование следующей конструкции:

select @@version

Xp_dirtree

Эта хранимая процедура используется для получения списка всех подкаталогов для текущего каталога. Чтобы получить все подкаталоги из C:\MSSQL7, выполните:

EXEC master..xp_dirtree 'C:\MSSQL7'

Вот результат на машине Александра:

subdirectory
---------------
Binn
Resources
1033
DevTools
Include
Lib
Data
Install
HTML
Books
LOG
JOBS
BACKUP
REPLDATA
FTP
depth
-----------
1
2
3
1
2
2
1
1
1
1
1
1
1
1
2

Xp_enum_oledb_providers

Эта хранимая процедура может использоваться, чтобы получить список всех OLE DB провайдеров. Xp_enum_oledb_providers возвращает Provider Name, Parse Name и Provider Description. Чтобы получить список всех OLE DB провайдеров выполните:

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

Вот результат на машине Александра:

Archive #          Date
-----------        ----------------
6                  02/27/2001 08:00
5                  03/04/2001 22:46
4                  03/05/2001 22:28
3                  03/08/2001 10:32
2                  03/10/2001 00:06
1                  03/10/2001 23:29
0                  03/11/2001 18:58

Xp_enumgroups

Эта хранимая процедура возвращает список групп Windows NT и их описание. Чтобы получить список групп Windows NT, выполните:

EXEC master..xp_enumgroups

Xp_fileexist

Вы можете использовать эту расширенную хранимую процедуру, чтобы определить, существует ли заданный файл на диске или нет. Пример её использования:

EXECUTE xp_fileexist filename [, file_exists INT OUTPUT]

Чтобы проверить, существует ли файл boot.ini на диске c: или нет, выполните:

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

Вот результат на машине Александра:

File Exists       File is a Directory        Parent Directory Exists
-----------       -------------------        -----------------------
1                 0                          1

Xp_fixeddrives

Это очень полезная расширенная хранимая процедура, которая возвращает список всех установленных жестких дисков и размер в МБ свободного пространства для каждого жесткого диска. Пример её использования:

EXEC master..xp_fixeddrives

Вот результат на машине Александра:

drive        MB free
-----        -----------
C            12082
D            396
E            793
F            46

Xp_getnetname

Эта хранимая процедура возвращает WINS имя SQL сервера, с которым Вы связаны. Пример её использования:

EXEC master..xp_getnetname

Вот результат на машине Александра:

Server Net Name
---------------------
CHIGRIK

Xp_readerrorlog

Эта, хранимая процедура возвращает содержание errorlog файла. Вы можете найти этот файл в каталоге C:\MSSQL7\Log, куда он помещается по умолчанию. Чтобы видеть текст errorlog файла, выполните:

EXEC master..xp_readerrorlog

Xp_regdeletekey

Эта хранимая процедура удалит ключ из системного реестра. Вы должны использовать её очень осторожно. Пример её использования:

EXECUTE xp_regdeletekey [@rootkey=]'rootkey',
                    [@key=]'key'

Чтобы удалить SOFTWARE\Test из раздела HKEY_LOCAL_MACHINE, выполните:

EXECUTE master..xp_regdeletekey
                    @rootkey='HKEY_LOCAL_MACHINE',
                    @key='SOFTWARE\Test'

Xp_regdeletevalue

Эта хранимая процедура удалит установленное значение ключа системного реестра. Вы должны использовать её очень осторожно. Пример её использования:

EXECUTE xp_regdeletevalue [@rootkey=]'rootkey',
                    [@key=]'key',
                    [@value_name=]'value_name'

Чтобы удалить значение TestValue для ключа SOFTWARE\Test из HKEY_LOCAL_MACHINE, выполните:

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]

Чтобы прочитать значение переменной @test из TestValue в ключе SOFTWARE\Test раздела HKEY_LOCAL_MACHINE, выполните:

DECLARE @test varchar(20)
EXECUTE master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
                    @key='SOFTWARE\Test',
                    @value_name='TestValue',
                    @value=@test OUTPUT
SELECT @test

Вот результат на машине Александра:
--------------------
Test

Xp_regwrite

Эта хранимая процедура используется, чтобы записывать в системный реестр. Пример её использования:

EXECUTE xp_regwrite [@rootkey=]'rootkey',
                    [@key=]'key',
                    [@value_name=]'value_name',
                    [@type=]'type',
                    [@value=]'value'

Чтобы записать Test в качестве значения TestValue, ключа SOFTWARE\Test раздела HKEY_LOCAL_MACHINE, выполните:

EXECUTE master..xp_regwrite
                    @rootkey='HKEY_LOCAL_MACHINE',
                    @key='SOFTWARE\Test',
                    @value_name='TestValue',
                    @type='REG_SZ',
                    @value='Test'

Xp_subdirs

Эта хранимая процедура используется, чтобы получить список подкаталогов для заданного каталога. По сравнению с xp_dirtree, xp_subdirs возвращает только те каталоги, у которых глубина вложенности равна единице. Пример её использования:

EXECUTE master..xp_subdirs 'C:\MSSQL7'

Вот результат на машине Александра:

subdirectory
-----------------------
Binn
DevTools
Data
Install
HTML
Books
LOG
JOBS
BACKUP
REPLDATA


Перевод: Александр Гладченко  2001г.

ПУБЛИКАЦИИ

Скачать электронную карту Ангарска бесплатно
Сайт управляется системой uCoz