Адміністрування SQL Server 2000 і розширені властивості об'єктів

Тетяна Крамарскі

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

З оглядових публікацій та документації відомо, що SQL Server 2000 підтримує для об'єктів бази даних розширені властивості. У документації можна знайти перелік процедур, що зберігаються, що працюють з розширеними властивостями, і приклади їх використання. Хоча механізм розширених властивостей пропонується в основному розробникам додатків, адміністратор баз даних теж може використовувати цей зручний інструмент.

Перше і найбільш очевидне застосування розширених властивостей об'єктів – це, безумовно, документування. Якщо адміністратор створює таблицю в Enterprise Manager і для її полів дає опис (Description), то опис для кожного поля автоматично перетворюється на розширене властивість з ім'ям MS_ Description.

У Query Analyzer контекстні меню об'єктів містять команду Extended properties. Перший з таких об'єктів – це сама база даних. Далі слідують розташовані за рівнями ієрархії зверху вниз об'єкти:

0 – User, Type;
1 – Table, View, Procedure, Function, Default, Rule;
2 – Column, Parameter, Index, Constraint, Trigger.

У самої бази даних рівня немає. Якщо в параметрах процедур, що працюють з розширеними властивостями, рівні не вказані, то властивість належить базі. Наприклад, оператори

Use MyDB exec sp_addextendedproperty N’Property1’, N’test’

додадуть до бази MyDB властивість Property1 зі значенням test.

У використання розширених властивостей закладається ієрархія об'єктів, дотримання якої від нас вимагає сервер. При використанні властивості необхідно вказувати весь ланцюжок рівнів ієрархії.

Введені тим чи іншим способом розширені властивості можна зберегти при генерації сценаріїв. Для цього перед запуском генерації потрібно вибрати на закладці Formatting параметр Include extended properties, і всі розширені властивості будуть занесені в сценарій. У SQL Server 2000 також можна перенести об'єкти разом з розширеними властивостями в іншу базу, якщо відзначити аналогічний параметр у діалоговому вікні майстра імпорту / експорту або в пакеті DTS.

Розширені властивості об'єктів бази даних можна тиражувати або, навпаки, зафіксувати їх приналежність до вузла. При тиражуванні розширені властивості, як одна із складових частин репліки, будуть перенесені на сервер-передплатник. Для забезпечення перенесення розширених властивостей об'єктів у складі репліки у властивостях публікації на закладці Articles необхідно вибирати потрібну статтю, і вже для її властивостей на закладці Snapshot зазначити параметр Extended properties.

Всі розширені властивості об'єктів бази зберігаються в системній таблиці Sysproperties. Для пошуку об'єктів за розширеним властивостям і їх значенням дуже зручно використовувати Query Analyzer. Потрібно вибрати з меню Tools команду Object Search і заповнити відповідні поля.

Для прискорення написання сценаріїв у Query Analyzer можна використовувати спеціальні шаблони для роботи з розширеними властивостями об'єктів. Ці шаблони знаходяться в папці Manage Extended Property і відповідають різних дій, виконуваних над розширеними властивостями.

А тепер перейдемо до задач адміністрування.

Аудит збережених процедур

Механізм розширених властивостей можна використовувати для аудиту виклику збережених процедур, тобто для отримання відомостей про те, хто викликав збережену процедуру, коли і з якими параметрами. Можна також у значенні розширеного властивості процедури запам'ятовувати порядковий номер її виклику. Для цього потрібно створити розширені властивості для процедури або користувача, наприклад, в Query Analyzer, а текст процедури доповнити викликом оновлення відповідних розширених властивостей. Інформацію, пов'язану з аудитом, можна отримувати за допомогою SQL Profiler. Перевага використання розширених властивостей в тому, що ця інформація стає приналежністю самого об'єкта і зберігається в ньому самому. Хоча такий механізм не замінює можливостей SQL Profiler.

Розширені властивості параметрів збереженої процедури можуть містити значення даних параметрів і дату використання. Все це відноситься тільки до процедур, написаним самостійно, навіть коли процедура зберігається в базі Master і її ім'я починається з sp_. Тексти системних збережених процедур для редагування недоступні, тому зсередини не можна управляти їх розширеними властивостями, хоча створювати ці властивості зовнішніми засобами можна.

Лістинг 1 містить текст збереженої процедури Showind, видає інформацію про індекси для цієї таблиці і пам'ятною дату і час свого виклику в значенні розширеного властивості Calldate.

Аудит та маркування таблиць

Розширені властивості таблиць можна використовувати для їх аудиту. У Лістингу 2 дан приклад тригера audit на таблицю example. Даний тригер не лише забороняє зміна таблиці, але і записує у значення розширеного властивості table_audit таблиці example ім'я користувача, який намагався її змінити, а в значення властивості користувача записує ім'я таблиці example. Передбачається, що у таблиці було заздалегідь створено розширене властивість table_audit, а у всіх користувачів бази – властивість user_audit. Можна піти далі, підрахувати число спроб і при досягненні заданого порогу накласти на користувача санкції.

Адміністратору доводиться працювати з системними таблицями та уявленнями. Для системних таблиць не можна створювати розширені властивості, а для системних уявлень можна. Однак в базі Master частина таблиць віднесена до призначених для користувача – це таблиця MSReplication_options і таблиці з іменами, які починаються на SPT_. У базі Distribution всі таблиці з іменами на MS теж користувацькі. В окремих базах значна частина службових таблиць, що беруть участь в тиражуванні, теж віднесена до призначених для користувача. Для них ми можемо застосовувати розширені властивості.

Розширені властивості можна використовувати і в якості маркерів для різних характеристик таблиць. Наприклад, можна створити розширене властивість Text_in_Row і застосовувати його для зберігання значення аналогічного властивості таблиці і наступного пошуку. Лістинг 3 містить процедуру, яка встановлює значення Yes для розширеного властивості, якщо властивість Text in row для таблиці доступно.

Супровід індексів

У SQL Server 2000 можна усувати фрагментацію індексів за допомогою команди DBCC INDEXDEFRAG. Припустимо, у адміністратора є збережена процедура, яка розбудовує всі індекси із заданим значенням фрагментації. Ця процедура може встановлювати дату і час дефрагментації індексу як значення розширеного властивості Defrag_Date для даного індексу. Параметр LogicalFrag приймає при цьому значення початкової фрагментації. Лістинг 4 містить приклад тексту такої процедури, що зберігається.

На закінчення хочу сказати, що тут перераховані далеко не всі можливості застосування розширених властивостей об'єктів у задачах адміністрування, і кожен адміністратор, звичайно, може знайти ще багато інших.

Про автора

Крамарскі Тетяна Олексіївна – К.т.н., MCSE, MCDBA, MCT. Спеціалізується на викладанні та консультуванні з питань використання SQL Server і продуктів BackOffice. Старший консультант компанії АЛЕСТА (MCSP, CTEC). Адреса: kram@alesta.ru

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*