Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Посібник Мова SQL кредитно-модульний.doc
Скачиваний:
35
Добавлен:
01.05.2015
Размер:
1.25 Mб
Скачать

Безпека

Інше важливе призначення збережених процедур - підвищення безпекиза допомогою ізоляції й шифрування. Користувачам можна надати право на виконання збереженої процедури без безпосереднього доступу до об'єктів бази даних,зякими працює збережена процедура. Крім того, якщо збережену процедуру зашифрувати при створенні або модифікації, користувачам не вдасться прочитати команди Transact-SQL, складові процедуру. Ці функції безпеки дозволяють ізолювати від користувача структуру бази даних, що забезпечує цілісність даних і надійність бази.

2. Операції зі збереженими процедурами

Збережені процедури створюють, модифікують і видаляють за допомогою редактору запитів або середовища SQL Server Management Studio. Процедуру дозволяється створювати раніше об'єктів, на які вона посилається. Ця можливість називається відкладеним дозволом імен. Для створення процедур використовують ключові словаCREATE PROCEDURE.

Перед виконанням процедури варто задати значення всіх необхідних параметрів. Збережені процедури можна виконувати вручну або автоматично (при запуску SQL Server). Для виконання процедури служить ключове слово EXECUTE. Його можна опустити, якщо виконується процедура, що, складається з єдиного рядка або ім'я процедури є першим словом пакета.

Часто доводиться модифікувати створені збережені процедури, наприклад, щоб додати параметр або змінити ту або іншу команду. Модифікація процедури замість видалення й повторного створення «з нуля» дозволяє заощадити час, оскільки при модифікації зберігаються багато властивостей збережених процедур (наприклад, права доступу). Для модифікації процедур використовуються ключові слова ALTER PROCEDURE.

Для видалення процедур використовують ключове слово DROP. Процедуру можна видалити вSQLServerManagementStudio, вибравши її і натиснувши клавішуDELETE. He варто видаляти процедуру доти, поки всі залежні від процедури об'єкти не будуть вилучені або модифіковані (щоб видалити залежність).

Збереження процедури

Під час створення процедури SQL Server перевіряє синтаксис складових її операторів Transact-SQL. При виявленні синтаксичної помилки SQL Server генерує повідомлення «syntax incorrect», і процедура не створюється. Якщо текст процедури проходить синтаксичну перевірку, то процедура зберігається, при цьому її ім'я і інша інформації (наприклад, автоматично згенерований ідентифікаційний номер) записується в таблицюSysObjects, а текст процедури - у таблицюSysCommentsпоточної бази даних.

Оператор SELECTзапитує ідентифікаційний номер збереженої процедуриByRoyaltyз таблиціSysObjectsбази данихPubs:

SELECT [name], [id] FROM [pubs].[dbo].[SysObjects]

WHERE [name] = 'byroyalty'

Цей запит повертає результат, показаний у таблиці:

Name Id

Byroyalty 581577110

Наступний оператор SELECTза допомогою інформації з таблиціSysObjects(ідентифікаційного номера збереженої процедуриByRoyalty) виконує запит до таблиціSysComments:

SELECT [text] FROM [pubs].[dbo].[SysComments]

WHERE [id] = 581577110

Цей запит повертає вихідний текст збереженої процедури ByRoyalty, ідентифікаційний номер якої дорівнює581577110.

Два показаних оператори SELECTможна об'єднати засобами ключового словаJOIN. Для простоти і ясності тут вони наведені окремо.

Для виводу вихідного тексту об'єкта (наприклад, незашифрованої збереженої процедури) краще використати системну збережену процедуру sp_helptext, оскільки при цьому повертається текст, розбитий на рядки. Ми вже використали збережену процедуруsp_helptextраніше.