Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LektsiiNovye.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.92 Mб
Скачать

Удаление функций

Когда функция становится ненужной, её можно удалить. Для удаления функций используется команда DROP FUNCTION, имеющая следующий синтаксис:

DROP FUNCTION { [ <owner_name>. ] <function_name> } [,...n ]

Команда имеет одинаковый синтаксис для всех типов функций. Для удаления функции достаточно указать лишь её имя. Дополнительно может быть указано ещё и имя владельца функции. Это обязательно в случае, если необходимо удалить функцию, принадлежащую не текущему пользователю и не владельцу базы данных (пользователю dbo).

С помощью одной команды DROP FUNCTION можно удалить множество функций, перечислив их имена через запятую.

Использование sql Server Management Studio

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

Гораздо удобнее создавать функции и управлять функциями с помощью средств SQL Server Management Studio. Значительным преимуществом этого инструмента для управления функциями является возможность непосредственного изменения существующего кода функции без необходимости написания его «с нуля». SQL Server Management Studio автоматически получает текущий код функции и предлагает его пользователю. Другим преимуществом является удобный интерфейс управления правами доступа пользователей к хранимой процедуре.

Как уже было сказано, каждая база данных имеет свой собственный набор функций пользователя. Для управления ими используется папка Программирование - Функции, которая имеется в каждой базе данных. При выборе этой папки в правой части окна SQL Server Management Studio отображается список созданных в соответствующей базе данных пользовательских функций, с указанием имени их владельца и датой создания. Для создания новой функции с помощью SQL Server Management Studio используется окно Создать, в котором предоставляется возможность выбрать тип создаваемой функции. SQL Server Management Studio автоматически представляет пользователю шаблон команды CREATE FUNCTION, с помощью которой и будет выполняться создание функции. Помимо того, что в распоряжении пользователя имеется готовый шаблон. Ещё одним преимуществом использования SQL Server Management Studio является возможность воспользоваться кнопкой Check Syntax (синтаксический анализ) для проверки синтаксиса введённого кода. Введённый в окне код можно сохранить в качестве шаблона, который впоследствии будет предлагаться пользователю по умолчанию.

Для редактирования функции достаточно дважды щёлкнуть на её имени в окне SQL Server Management Studio.

Хранимые процедуры

Хранимые процедуры (stored procedure) MS SQL Server представляют собой группу команд Transact-SQL, объединенных в один модуль. Эта группа компилируется и выполняется как единое целое. Каждая хранимая процедура имеет уникальное в пределах базы данных имя, по которому пользователи могут к ней обращаться. В хранимые процедуры также могут входить команды вызова других хранимых процедур.

Администратор базы данных может написать хранимую процедуру для выполнения стандартных действий и раздать пользователям права на её запуск. Для выполнения описанных в хранимой процедуре действий пользователю достаточно вызвать эту хранимую процедуру по имени, а не создавать самому заново её алгоритм и писать код. Кроме того, если с течением времени алгоритмы задач, выполняемых хранимыми процедурами, изменятся, то будет достаточно изменить хранимую процедуру, не переписывая заново все клиентские приложения.

В состав MS SQL Server входит большое количество встроенных системных хранимых процедур. Эти хранимые процедуры, имеющие префикс sp_, охватывают все аспекты управления и конфигурирования сервера, изменяя значения в системных таблицах и базах данных. Хранимые процедуры берут на себя обязанности по модификации данных в системных таблицах, скрывая от клиента особенности организации этих операций. Практически любое действие по администрированию MS SQL Server реализуется средствами встроенных системных процедур. Даже административная утилита SQL Server Management Studio разработана как интерфейс между пользователем и системными хранимыми процедурами. В случае необходимости, используя широкий набор хранимых процедур, можно создать собственную административную утилиту, которая будет ориентирована на решение специфических задач.

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

Отдельно стоит упомянуть расширенные хранимые процедуры. Для пользователя они тождественны обычным хранимым процедурам, в действительности же представляют собой динамически подключаемые библиотеки (DLL), которые создаются при помощи SQL Server Open Data Services API. Администратор базы данных может регистрировать эти библиотеки на сервере в качестве процедур и предоставлять пользователям разрешения на их запуск. Информация о расширенных хранимых процедурах размещается в системной базе данных master.

Для запуска хранимой процедуры используется команда Transact-SQL EXECUTE:

EXEC <имя хранимой процедуры>.

Когда хранимая процедура выполняется первый раз, сервер создаёт план исполнения процедуры. План исполнения можно рассматривать как рекомендацию по наиболее оптимальному выполнению процедуры. При повторном выполнении хранимой процедуры система автоматически использует сохранённый в памяти план выполнения, что позволяет повысить производительность. Однако так как объём оперативной памяти ограничен, то планы исполнения не хранятся до бесконечности  со временем происходит так называемое устаревание планов исполнения, следовательно, в этом случае при повторном использовании хранимой процедуры план исполнения генерируется заново.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]