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

 

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

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

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


Системные хранимые процедуры использует сам сервер для выполнения разного рода действий по ведению БД и администратором. Системные процедуры всегда начинаются с префикса и хранятся в БД Master. Процедур этих масса, но, если Вам понадобиться создать собственную, создайте ее с именем, начинающимся с поместите в Master, и она будет доступна любому пользователю сервера.

ВНИМАНИЕ! Если Вам захотелось внести изменения в системную хранимую процедуру, сделайте эти изменения в копии, сохраните оригинальную процедуру под другим именем, но не трогайте исходный код. Хотя системные процедуры непосредственно редактировать не позволено (рис. 3-10).

182

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

Рис. 3-10. Теперь окно Properties хранимой процедуры типа System не дает возможности редактировать ее текст.

Локальные хранимые процедуры создаются в пользовательских БД. Если Вы создаете процедуру с именем, начинающимся с «##» или «#», Вы получаете временную хранимую процедуру, помещаемую в БД Tempdb. Процедуры, имена которых начинается с двух символов #, — глобальные, они видны любой сессии с данным сервером. Процедуры с одним # — локальные и видны только из соединения, в котором созданы. Когда соединение, в котором создана процедура, закрыто, процедура автоматически уничтожается.

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

Есть еще один тип хранимых процедур, принципиально отличный от перечисленных, — расширенные хранимые процедуры (Extended stored procedures). Это DLL, как правило, написанные на С, и называются они хранимыми только потому, что их имя хранится в БД SQL Server. Сами DLL хранятся в виде файлов в соответствующем каталоге ОС. Расширенные хранимые процедуры вызываются по имени, но на исполнение запускается не T-SQL, а С-код.

www.books-shop.com

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

www.books-shop.com

Зачем нужны хранимые процедуры

Хранимые процедуры предоставляют ряд преимуществ.

• Код, описывающий логику процесса обработки данных, хранится в одном месте, его проще поддерживать и модифицировать.

• Для вызова хранимой процедуры у пользователя должны быть соответствующие права, что позволяет обеспечить централизованное управление системой безопасности. Можно установить дополнительную защиту от неправомерных действий пользователя, запретив ему непосредственную работу с таблицами и предоставив только право на исполнение хранимой процедуры.

• Хранимая процедура может запускаться автоматически при старте сервера и выполнять административные действия или проверки. Кстати, чтобы планы наиболее часто исполняемых хранимых процедур были уже размещены в кэше, когда клиентское приложение захочет к ним обратиться, можно при старте сервера запустить процедуры на исполнение. Назначение атрибута «стартовать автоматически» выполняет хранимая процедура Хранимые процедуры запускаются после полного завершения старта сервера.

Чтобы сократить число пользовательских соединений (каждая процедура требует одного соединения), логично применить единственную процедуру, которая стартует автоматически и вызывает остальные.

Хранимые процедуры заметно сокращают объем данных, пересылаемых по сети. При вызове процедуры передается только ее имя и, возможно, параметры. Ясно, что гораздо «дешевле» передать команду:

Execute SelectAuthors

чем что-нибудь вроде:

SELECT au_lname, au_fname

FROM authors WHERE au_id IN

(SELECT aujd FROM titleauthor WHERE title.id IN

(SELECT title_id FROM titles

WHERE type = 'popular_oomp'))

Чем сложнее код в теле хранимой процедуры, тем очевиднее ее преимущества.

При создании хранимой процедуры выражения проходят проверку на правильность синтаксиса. При первом исполнении хранимой процедуры процессов запросов SQL Server:

184

Microsoft SQL Server 2000. Новейшие технологии

• проверяет наличие объектов, на которые имеются ссылки; при создании процедуры объектов может не быть: версия 7.0 использует отложенное разрешение имен (delayed name resolution);

• проверяет соответствие типов данных, объявленных для переменных.

Следующий этап — оптимизация. Если процедура успешно прошла синтаксический разбор, оптимизатор запросов SQL Server анализирует индивидуальные выражения в теле процедуры и создает план исполнения, обеспечивающий наиболее быстрое (по мнению оптимизатора) исполнение. Для принятия решения оптимизатор принимает во внимание:

• размер таблиц;

• присутствие и характер индексов, распределение данных в полях, составляющих ключи индексации;

• условия выборки (операторы и значения), сформулированные в предложении WHERE;

• наличие в SQL-предложениях объединений и аргументовиЫЮЫ, GROUP BY или ORDER BY.

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

Для создания хранимых процедур и триггеров версия 8.0 предлагает удобный интерфейс. Как видите, применяется цветовое выделение конструкций языка (рис. Если бы еще можно было регулировать то, насколько далеко нажатие клавиши табуляции отодвигает строку, все было бы просто замечательно. Не помешал бы и отладчик, да и возможность отображения номеров строк пришлась бы кстати, но это уже роскошь.
Предыдущая << 1 .. 62 63 64 65 66 67 < 68 > 69 70 71 72 73 74 .. 187 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100