Программирование >>  Реализация баз данных 

1 ... 81 82 83 [ 84 ] 85 86 87 ... 162


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

В третьем примере временная хранимая создается непосредственно в

DB. Для этого необходимо сделать базу данных TempDB текущей (USE TempDB) перед команды или использовать ее полное имя По-

добно хранимым процедурам из базы данных Master, локальные и глобальные процедуры разрешается вызывать, указывая крагкт- имена (независимо от текущей базы данных). Груплироака, кэширование ование хранимых процедур

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

процедуры номером, отделенным точкой с запятой. Например, если во время создания присвоить двум процедурам имена и то эти процедуры бу-

логически сгруппированы. При просмотре содержимого GroupedProc отображается код обеих процедур ртёРгос; I и Gn)upedProc,Z.

По умолчанию во время первого хранимой процедуры ее план кэширует-

ся. После этого кэширование не выполняется до перезапуска сервера или модификации таблицы, лежащей в основе хранимой процедуры. В некоторых случаях кэширование плана исполнения хранимой процедуры нежелательно. Например, если параметры хранимой процедуры существенно варьируются от запуска к запуску, то кэширование ее плана исполнения дает обратный результат повышения производительности. Чтобы вызывать перекомпиляцию процедуры при каждом ее исполнении, при создании следует добавить к процедуре ключевые слова WITH RECOMPILE. Разрешается также принудительно выполнить перекомпиляцию с помощью хранимой процедуры sp ге-compile или ключевых слов WITH заданных при исполнении процедуры.

Шифрование хранимой процедуры предотвращает просмотр ее содержимого. Чтобы зашифровать хранимую процедуру, создать ее с ключевыми словами WITH EN-

CRYPTION. Например, вот как создать зашифрованную процедуру Protected:

USE Pubs GO

CREATE PROC [dbo].[protected] WITH ENCRYPTION AS

SELECT [aufname], [au.tnane] EROM [p.ihi;]. [dbo] f.i.nns]

слова WITH ENCRYPTION шифруют содержимое столбца SysComments, в

котором помешен исходный текст процедуры. Проще всего определить, зашифрована ли процедура, с помощыо функции OBJECTPROPERTY:

рить, зашифрована ли процедура.

- Если это так, вернуть значение 1 в IsEncrypted SELECT OBJECTPROPERTY(object ld(Frotected), IsEncrypted) или путем вызова процедуры с sp heljitext:

-- Если хранимая процедура зашифрована,

-- вернуть The object comments have been encrypted.

EXEC sp helptext protected



Примензние Зашифрованную хранимую е.чуру нельзя реплицировать. SQL Server расшифровывает ее для Однако никому, даже владельцу, не удастся просмот-

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

в нацежном месте хранят незапшфрованную версию оирелелени хранимой процедуры. Чтобы процедуру, следует отредактировать незашифрованную версию и снова сохранить ее i) безопасном месте. После этого можно модифицировать с\ щес f иуюшуи зашифрованную хранимую процедуру средствами оператора ALTER PROCEDURE с шифрованием (об операторе ALTER PROCEDURE рассказано далее).

Enteiise Manager

Хранимые процедуры можно создавать непосредственно в Enterprise Manager. Для этого раскройте консоль сервера, затем узел базы данных, в которой хотите это сделать. Щелкните правой кнопкой узел Stored Procedure и выберите команду New Stored Procedure. В появившемся окне Stored Procedure Propeгtit - New Stored Procedure введите содержимое хранимой процедуры. На рис. 8-1 показано диалоговое окно Stored Procedure Properties - New Stored Procedure с исходным текстом предыдущего примера.

Stored Procedure erties - New Stored Procedure

Owner Cfeate date;


REATE PROCEDURE (dboS [LissAuitaNemet] SELECT laujname] FROM (pubs) [dbo] lauihott)

3/3

Cancel

Рис. 8-1. Вид вкладки General в диалоговом окне Stored Procedure Properties - New Stored Procedure для новой хранимой процедуры

Прежде чем создавать хранимую можно проверить ее синтаксис и сохра-

нить ее как шаблон. Этот шаблон будет появляться каждый раз при создании новой хранимой средствами Enterprise Manager. После создания разрешается открыть ее свойства и настроить права доступа. По умолчанию полный набор прав доступа для процедуры ее владельцу и системным администраторам.

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



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

Мастер Create red Procedure

Мастер Create Stored Procedure проводит пользователя через все этапы создания новой хра- нимой проиедурь). Мастер iaiiycKaiui командой Wizards из меню Tools. Затем в окне Select Wizard следует раскрыть опцию Database, выбрать мастер Create Stored Procedure Wizard и щелкнуть ОК. Далее следуйте указаниям мастера. На рис. 8-2 показано окно Welcome to the

Create Stored Procedure с перечнем возможностей мастера Create Stored Procedure.


Welcome Create Stored

Procedure Wizard

Thn wtKVd bslpi you (jeata slwed pioceduees iiwig

S t* jioiedoicoi iure!lhaKnieil update, otifeWe ют

ptocaduw.

Рис. 8-2. Первое окно мастера Creale Stored Procedure

Мастер Create Stored Procedure оляе г создавать процедуры для добавления, удаления и обновления данных в Созданную мастером процедуру допустимо модифицировать как в самом мастере, так и с помощью других инструментов Query Analyzer).

Создание и добавление расширенных хранимых процедур

Создав расширенную хранимую гаедуру, необходимо зарегистрировать ее в SQL Server. Это разрешено только ователял; - участникам роли sysadmin. Можно также зарегистрировать расширенную процедуру средствами системной хранимой процедуры sp ad-dextendedproc в Query Analyzer или воспользоваться для этого Enterprise Manager. В Enterprise Manager раскройте базу данных Master, щелкните правой кнопкой узел Extended Stored Procedures, а затем - New Extended Stored Procedure. Расширенные хранимые процедуры можно добавлять только к базе данных Master.

Отложенное разрешение имен

Во время создания хранимой процедуры SQL Server не проверяет существование объек-10В, на которые ссылается процедура Такая возможность необходима, поскольку иногда объект (например, таблица), на который ссылается хранимая процедура, не существует на момент создания процедуры. Эта функция называется отложенным разрешением имен. Объект проверяется уже пр нени); хранимой процедуры.

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



1 ... 81 82 83 [ 84 ] 85 86 87 ... 162

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика