Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Артемов Д.В. -> "Microsoft SQL Server 2000" -> 70

Microsoft SQL Server 2000 - Артемов Д.В.

Артемов Д.В. Microsoft SQL Server 2000 — М.: Издательско-торговый дом «Русская Редакция», 2001. — 576 c.
ISBN 5-7502-0154-6
Скачать (прямая ссылка): artemov.pdf
Предыдущая << 1 .. 64 65 66 67 68 69 < 70 > 71 72 73 74 75 76 .. 187 >> Следующая


SELECT Fldl, Fld2 From MyTable WHERE KeyFld > @Param1

Для таблицы, имеющей 1 000 000 записей и монотонно возрастающее значение ключевого поля, повторное использование плана с параметром 20 после построения плана для запроса с параметром 999990, очевидно, не оптимально. И как быть? По ситуации. Тем более, что в Вашем распоряжении гораздо больше инструментов анализа работы сервера.

Недокументированные хранимые процедуры

Недокументированные, неподдерживаемые, но все равно полезные.

Приведенная в этом разделе информация — результат моих изысканий, который нельзя рассматривать как официальное описание хранимых процедур, их параметров и возвращаемых результатов. С выходом очередного Service Pack процедуры могут быть изменены или удалены. Если что-то работает не так, то техническая поддержка по вопросам прямых вызовов недокументированных процедур не оказывается. С другой стороны, мне всегда казалось по меньшей мере странным нежелание разработчиков документировать весьма полезные аспекты работы приложений, особенно в той части, когда определенная функциональность языка носит исключительно информа-

www.books-shop.com

j 88

Microsoft S Q L Server 2000, Новейшие технологии

ционный характер и не способна повредить системе (как, например, описанная выше команда DBCC LOGINFO).

Начнем с имен. Мы рассмотрим несколько «стандартных» процедур, т. е. тех, что написаны на чистом T-SQL, и несколько «расширенных», про которые известно, что они реализованы в форме динамических библиотек (DLL). Стандартные процедуры нам доступны в исходных текстах, тогда как представляют собой классический «черный ящик». И еще пара предупреждений. Во-первых, недокументированных процедур очень много, но большая часть отвечает за разного рода вспомогательные действия вроде обеспечения репликации и подобных аспектов работы сервера. Во-вторых, НИКОГДА не редактируйте системные процедуры напрямую. Отройте текст, выполните команду CREATE PROCEDURE с указанием иного имени и работайте с копией. Это относится и к ситуации, когда Вы обнаружили ошибку в коде, осознали, что способны улучшить функциональность процедуры и т. д.

Итак, приступим. Сначала обратимся к большой группе процедур, расположенных в БД Master и начинающихся с префикса «SP_MS». Если применить команду SELECT * FROM sysobjects WHERE name LIKE «SP_MS%», результатом исполнения запроса будет более 450 строк. Значительная часть этих процедур не годится для непосредственного использования, но есть несколько таких, что могут оказаться весьма полезными для Ваших приложений.

sp_MSexists file

Проверяет наличие файла в определенном каталоге. Синтаксис вызова таков:

• sp_MSexists_file (@full_pathnvarchar(512), ©filename nvarchar(255))

Первый параметр — полный путь без указания имени файла, второй — имя файла. Сама процедура представляет собой «оболочку» расширенной процедуры и, если указанный файл найден,

возвращает 1, в противном случае — 0. Пример вызова:

declare @outpaг int

execute Soutpar = spMSexistsfІІе "С:\",

select <3>outpar - returns 1

"Autoexec. bat"

Если Вы решите использовать непосредственно, пере-

дайте ей полный путь и включите в строку имя самого файла. Можно также передать только путь до каталога:

xp_fileexist

go

xp_fileexist

go

'C : \au Loexec. bat"

'D: \windo\4S"

www.books-shop.com

ГЛАВА 3: Управление базами данных

1 gg

Результатом исполнения этих двух команд будут такие наборы:

Parent Directory Exists

Существует каталог более высокого уровня

1

Parent Directory Exists 1

File Exists File is a Directory

Файл существует Переданный путь

является каталогом

1 0

File Exists File is a Directory

0 1

Это позволяет проверять, что было передано в качестве параметра: путь к файлу или к каталогу.

sp_MSget oledbinfo

Эта оболочка расширенной процедуры xpoledbinfo вызывается так: execute sp_MSget_oledbinfo 'Servername', Info type,'Login','Password'

Если вместо второго параметра передать NULL, результатом исполнения будет таблица: Information Type Value

Тип информации Значение

DBMS Name Microsoft SQL Server

DBMS Version 08.00.0100

Database Name master

SQL Subscriber TRUE

Как видите, параметр 'Info type' может принимать значения: «DBMS name», «DBMS Version», «Database Name» и «SQL Subscriber».

И стандартная и расширенная процедуры работают не только для SQL Server 2000, но и для так называемых «связанных серверов». Если в качестве связанного сервера я использую БД Visual FoxPro, а сам связанный сервер назван «VFP OLEDB», я могу выполнить команду:

sp_MSget_oledbinfo

'VFP OLEDB'

и она вернет следующий набор данных: Information Type Value

DBMS Name Microsoft Visual FoxPro

DBMS Version 07.00.0000

Database Name E:\PROGRAM FILES\MICROSOFT

VISUAL STUDIO\VFP98\SAMPLES\ DATA\TESTDATA.DBC SQL Subscriber TRUE

В данном случае в качестве версии БД берется версия OLE-dB-провайдера Visual FoxPro (надеюсь, что вскоре после выхода этой книги Вы сможете поставить себе следующую версию VFP, в состав
Предыдущая << 1 .. 64 65 66 67 68 69 < 70 > 71 72 73 74 75 76 .. 187 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100