- Спрощуємо роботу з допомогою простої і ефективної моделі програмування
- Основи об'єктно-орієнтованої моделі програмування
- Побудова додатки за допомогою SMO
- Деякі роз'яснення концепцій
- Переваги Visual Studio 2005
- Модернізація SMO Backup
- Розробка бази даних і таблиці за допомогою SMO
- Використовуйте переваги SMO
Спрощуємо роботу з допомогою простої і ефективної моделі програмування
SQL Management Objects (далі SMO), новий програмований рівень в SQL Server 2005, доповнює і замінює SQL Distributed Management Objects (SQL-DMO). У цій статті я представлю SMO і покажу, як його використовувати. Йтиметься про застосування Visual Studio 2005 і SMO для розробки керованого коду та рішення трьох основних завдань адміністрування SQL Server 2005. Ми побудуємо просте додаток для резервного копіювання, доопрацюємо його з метою полегшення використання, а потім створимо базу даних і таблицю. Грунтуючись на цьому коді, читачі зможуть задіяти його в якості фундаменту для обробки більш складних завдань. SMO забезпечує програмний підхід до повної об'єктної моделі SQL Server. Будь-яка робота, яка виконується на мові data definition language (далі DDL), тепер може виконуватися на об'єктно-орієнтованої мови керованого коду для Common Language Runtime (CLR) (тобто .NET). Створювати додатки за допомогою SMO і Visual Studio 2005 набагато легше, ніж в традиційних Notepad і SQL-DMO. Крім того, в цій статті я покажу, яким чином можливості Visual Studio допомагають зменшити кількість помилок при програмуванні і підвищують ймовірність того, що рішення правильне запрацює з першого разу.
SMO пропонує більшу продуктивність і масштабованість, ніж SQL-DMO. SQL-DMO залишається в SQL Server 2005 тільки для зворотної сумісності. SMO дає повний доступ до всіх властивостей SQL Server 2005. SMO можна використовувати для управління SQL Server 2000 і SQL Server 7.0. До того ж, оскільки SMO виконаний як керований код CLR, можна легко і швидко розробляти стійкі рішення, які використовують об'єктно-орієнтоване програмування.
Незважаючи на те що існує можливість використання будь-якого текстового редактора для написання керованого коду, Visual Studio 2005 пропонує високопродуктивну середу для швидкого прикладного програмування. Visual Studio 2005 прискорює розробку додатків SMO, оскільки має в своєму розпорядженні стандартними шаблонами, такими як шаблони для додатків Windows Forms, для ASP.NET Web Form і Web-служб, консольних додатків і служб Windows. Якщо використовувати шаблон для розробки додатків SMO, на кодування витрачається менше зусиль, тому що в шаблоні є написаний заздалегідь «зразковий» код, який пов'язує частини програми один з одним.
Я сподіваюся, що читачі вже знайомі з будь-якої версією Visual Studio і SQL Server. Тим більше непогано було б знати, як використовувати Visual Studio для розробки простих додатків Windows. Приклади в цій статті створені в Visual Basic .NET і C #, але якщо читачі раніше працювали з Visual Basic, C ++ або Java, все повинно бути зрозуміло.
Основи об'єктно-орієнтованої моделі програмування
Перш за все коротко розглянемо деякі визначення в термінології об'єктно-орієнтованого програмування. Бібліотека - це сукупність класів. Клас - опис об'єкта. Об'єкт - екземпляр класу. Наприклад, проект будинку - це клас (абстракція), а будинок, побудований за проектом, - це об'єкт. Майже так само, як і будинок, об'єкт «зроблений з проекту». Об'єкт повинен оброблятися (створюватися) з класу. Кожен об'єкт - це певний екземпляр класу. Клас має властивості, методи і події, які доступні для використання об'єктами, створеними з цього класу. Всі властивості, методи і події об'єкта визначені класом. Властивість - це ознака, що визначає чи описує об'єкт. Наприклад, деякі з багатьох властивостей об'єкта бази даних - це ім'я, розмір і дата створення. Методи, такі як create, alter, drop і grant, є операціями, пов'язаними з об'єктом. Події - це випадки, які перехоплюються об'єктом і можуть використовуватися, щоб викликати дію. Наприклад, клацання по кнопці в формі Windows викликає подія Button Click. Потрібно написати власний код, щоб обробити подія і зробити деяку дію, наприклад відновлення попереднього стану бази даних. Ці принципи об'єктно-орієнтованого програмування можна буде бачити в прикладах цієї статті. Я поясню деякі концепції об'єктно-орієнтованого програмування трохи пізніше, а зараз приступимо до створення програми для резервного копіювання.
Побудова додатки за допомогою SMO
Ми почнемо з побудови програми для резервування бази даних AdventureWorks, нової бази даних, що містить приклади SQL Server 2005. При наявності різноманітних інструментів для адміністраторів баз даних і трирівневих додатків для резервного копіювання напрошується питання: навіщо витрачати час на програмування додатки, що резервує базу даних? Уявімо реальну ситуацію, яка включає вимоги щодо завантаження даних при операціях між компаніями. У разі збоїв при завантаженні даних необхідно автоматично повернути базу даних в той стан, в якому вона була безпосередньо перед завантаженням. Справа ускладнюється тим, що немає можливості заздалегідь спланувати копіювання, так як дані можуть надходити від ділових партнерів в будь-який час. SMO дозволяє розробити повністю автоматизоване рішення, яке резервує базу даних негайно, після того як ці дані будуть завантажені
Почнемо з запуску Visual Studio 2005. Потрібно відкрити меню і вибрати File, New, Project. Коли з'явиться діалогове вікно New Project, слід вибрати Project Type і Template, тобто шаблон для проекту, як показано на екрані 1, потім клацнути OK. Для цього прикладу я вибрав шаблон Console Application (як і sqlcmd і osql, він запускається в командному вікні), оскільки він вимагає мінімальної кількості коду для демонстрації об'єктно-орієнтованого програмування при використанні бібліотеки класів .NET Framework 2.0 (SMO - це частина .NET Framework 2.0). Надалі, коли додаток для резервування бази даних буде вдосконалено, буде використовуватися шаблон Windows Application, оскільки буде потрібно для користувача інтерфейс з широкими можливостями. Шаблон Windows Service є підходящим варіантом в тому випадку, коли від програми потрібна робота в фоновому режимі, як служби.
Додамо посилання на Microsoft.SqlServer.Smo, тобто на бібліотеку класів CLR. Потрібно зайти в меню Project і вибрати Add Reference. У діалоговому вікні Add Reference, яке показано на екрані 1, слід клацнути на закладці .NET, вибрати Microsoft.SQLServer.Smo, потім клацнути OK. З'явиться вікно з кількома рядками коду, які надає шаблон Console Application. Необхідно видалити весь вихідний код у вікні, потім вставити код Visual Basic .NET, який показаний в лістингу 1 , Або код C # в лістингу 2 . Це весь код, необхідний для резервування бази даних AdventureWorks. Все просто.
Зауважимо, що не збережені зміни відзначені жовтим кольором в крайньому лівому полі вікна коду. Можна зберегти зміни зараз, але це не обов'язково. При запуску програми Visual Studio 2005 автоматично зберігає зміни, і жовті позначки змінюються на зелені. Але перед запуском програми SQLBackup я рекомендую спочатку вивчити і осмислити код. Приклади в лістингах 1 і 2 ілюструють кілька важливих концепцій об'єктно-орієнтованого програмування.
Додаток в Visual Studio 2005 запускається так само, як запит в SQL Server 2000 Query Analyzer. Запуск починається зі клацання на значку Start (зелений трикутник) або натискання кнопки F5. Вікно Console з'являється при запуску програми, і, коли воно зникає (приблизно через хвилину), резервна копія бази даних готова.
Для підтвердження того, що резервний файл бази даних був створений з ім'ям C: AdventureWorks.bak, можна використовувати Windows Explorer.
Деякі роз'яснення концепцій
Ми почали з пропозиції Imports в тексті коду Visual Basic .NET в лістингу 1 або з пропозиції using в коді C # в лістингу 2. Додавання цих пропозицій в початок коду дозволяє використовувати скорочену нотацію. Незважаючи на те що ця пропозиція технічно необов'язкове, воно рекомендується для забезпечення швидкості і акуратності. Наприклад, якщо пропозиція опустити, доведеться ввести рядок BackupActionType.Database as Microsoft.SqlServer. Management.Smo.BackupActionType.Database.
Необхідно використовувати конструктор об'єкта (метод New в Visual Basic .NET або новий метод в C #) для створення (ініціалізації) реального об'єкта як виділеного з абстрактного визначення, яке є в бібліотеці класу (такий, як бібліотека класів SMO). Конструктор, який має більше однієї форми, називається перезавантажених. Кожна форма перезавантажених конструктора має свою сигнатуру, інакше кажучи, кожен конструктор має унікальний набір параметрів. Функція IntelliSense Visual Studio допомагає вирішити, яку перезавантаження застосувати, показуючи все варіанти перезавантаження конструктора.
В об'єктно-орієнтованому програмуванні після створення екземпляра об'єкта зазвичай задаються деякі з властивостей об'єкта. Це нескладне додаток для резервування бази даних встановлює чотири властивості: тип резервування, ім'я набору копіювання, назва бази даних для копіювання і тип пристрою резервування. Потрібно викликати методи об'єкту, щоб спонукати об'єкт на вчинення дії. Наше додаток використовує метод Add об'єкта Backup для додавання повного імені резервного файлу в набір елементів Backup. Об'єкту Server наказано встановити з'єднання. Останній крок викликає метод SqlBackup об'єкта Backup, щоб виконати реальне копіювання.
Переваги Visual Studio 2005
Visual Studio забезпечує дві можливості, які істотно підвищують швидкість і якість програмування: IntelliSense і контекстно-залежна підказка. IntelliSense значно спрощують розробку коду, якщо порівнювати з написанням сценаріїв SQLDMO в Notepad. У процесі кодування тексту IntelliSense забезпечує перелік і короткий опис властивостей і методів об'єкта SQLBackup, як показано на екрані 3 . Щоб отримати контекстну підказку про код, в якому знаходиться курсор, потрібно натиснути клавішу F1.
Модернізація SMO Backup
Наше додаток створює резервну копію бази даних, однак у нього є два явних недоліки: ім'я бази даних жорстко запрограмоване і відсутня можливість перевірки резервної копії. Для усунення цих недоліків необхідно трохи модернізувати додаток, надавши користувачу можливість вибору імені бази даних зі списку, щоб переглянути резервну копію, створюючи екземпляр об'єкту Restore і викликаючи метод Verify.
Освоївши основи розробки програми за допомогою Visual Studio 2005, створимо додаток, яке має користувальницький інтерфейс Windows. Додатки Windows вимагають значного більшого обсягу коду, ніж додатки консолі. При розробці нового проекту буде використовуватися шаблон Windows Application. Visual Studio 2005 автоматично додає необхідний для проекту додатковий код. На відміну від попередніх версій Visual Studio, Visual Studio 2005 зберігає автоматично розроблений код в окремому від написаного користувачем коду файлі. У Visual Basic .NET цей файл називається formname.Designer.vb. У C #, він носить назву formname.Designer.cs. Файл за замовчуванням прихований. Щоб побачити файл в Solution Explorer, потрібно вибрати режим Show All Files. Код в файлі Designer не доведеться змінювати вручну, він зміниться автоматично, коли в форму додадуться нові елементи управління. Код, написаний користувачем, включений або в файл formname.vb, або в formname.cs. Якщо залишити ім'я форми за замовчуванням, Form1, файл з кодом буде називатися Form1.vb або Form1.cs.
У Visual Studio 2005 у меню виберемо File, New, Project. Потім потрібно вказати шаблон Windows Application для потрібну мову. Виберемо VerifiedBackup як ім'я проекту. Visual Designer з'являється разом з порожнім об'єктом Form. Використовуючи Toolbox, перемістимо елемент Button і елемент ListBox в форму. Використовуючи вікно Properties, дамо елементу ListBox ім'я Databases, а елементу Button ім'я DoBackup за допомогою властивості Text в Backup. Як і в попередньому прикладі, додамо посилання на Microsoft.SqlServer.Smo. Крім того, потрібно додати посилання на Microsoft.SqlServer.ConnectionInfo. Двічі клацнемо на елементі Button для створення програми обробки події для кнопки і для того, щоб перейти до режиму відтворення коду Code View. Екран тепер повинен виглядати так, як показано на екрані 4.
Потім можна створити більш зручне додаток для резервного копіювання, надавши користувачу перелік імен баз даних для вибору. Покращимо додаток SqlBackup додаванням коду в обробник події Form Load, який буде заповнювати об'єкт ListBox іменами баз даних на сервері. При копіюванні бази даних тепер користувач може просто вибрати базу даних зі списку та натиснути Backup. Нарешті, для того щоб перевірити копію, додамо об'єкт Restore, а щоб надати користувачеві можливість перевірки стану резервної копії - керуючий елемент MessageBox. В лістингах 3 і 4 показано, як це зробити.
Як і раніше, можна замінити весь код в Form1.vb на код лістингу 3 або замінити код в Form1.cs на код лістингу 4 . Спочатку потрібно двічі клацнути на керуючому елементі Form і керуючому елементі Button для реєстрації обробників подій у файлі коду Visual Designer. Слід переконатися, що для Form, ListBox і Button використовуються керуючі імена Form1, Databases і DoBackup, відповідно до тексту прикладів цієї статті. Не можна забувати і про те, що C # є мовою, чутливим до регістру, тому doBackup і DoBackup представляють різні об'єкти.
Для спрощення кодування і для того, щоб уникнути помилок, можна завантажити готове рішення і працювати з ним. Після завантаження коду слід двічі клацнути на файлах vbproj або csproj для завантаження в Visual Studio 2005. В установках файлу можуть з'явитися повідомлення про помилку, такі як The automatically saved settings file?% User_documents% visualstudiosettingsvisualstudio8.0currentsettings.vssettings? can not be found. Потрібно натиснути OK. Ці повідомлення можна ігнорувати, так як Visual Studio створює дані установки, коли проект завантажується в Visual Studio.
Тепер запустимо модернізоване додаток для резервного копіювання. Слід натиснути F5 або значок Start (зелений трикутник). Виберіть базу даних, потім клацніть Backup. Як показано на екрані 5, коли копія готова, з'являється вікно, що показує статус копії. У третьому прикладі буде показано, як, використовуючи SMO, створити базу даних і таблицю.
Розробка бази даних і таблиці за допомогою SMO
Багато років розробники баз даних використовували програмний код для автоматичного створення таблиць. Загальний підхід полягав у створенні рядка, що складається з пропозиції T-SQL, CREATE TABLE, яке посилається на виконання сервера бази даних. SMO пропонує більш ясний, зручний об'єктно-орієнтований спосіб розробки об'єктів баз даних прямо в тексті програми, без використання в якості посередника T-SQL.
В лістингах 5 і 6 показано, як створити нову базу даних і таблицю повністю в тексті програми, без написання будь-яких пропозицій на T-SQL. Ми використовуємо об'єкт Database для створення бази даних і об'єкт Table - для складання таблиці. Щоб зберегти простоту програмування, слід вибрати шаблон Console Application і назвати його CreateTable. Можна додати код до інших шаблонах, в залежності від типу обраного призначеного для користувача інтерфейсу. Потім додамо посилання на Microsoft.SqlServer.Smo і на Microsoft.SqlServer.ConnectionInfo. Тепер запустимо додаток. Необхідно використовувати SQL Server Management Studio для перевірки новостворених баз даних і таблиць. Якщо SQL Server Management Studio вже запущений, можливо, знадобиться спочатку клацнути на значку Refresh в Object Explorer.
Використовуйте переваги SMO
Як було показано на трьох прикладах, програмувати за допомогою SMO і Visual Studio 2005 просто і зручно. SMO і Visual Studio 2005 пропонують адміністраторам баз даних і розробникам неперевершену гнучкість при створенні численних додатків для роботи з базою даних, а крім того, забезпечують зниження складності і часу розробки з більш високою продуктивністю, кращої масштабністю і великою кількістю властивостей, ніж SQL-DMO. SMO в SQL Server 2005 також має зворотну сумісність з SQL Server 2000 і SQL Server 7.0.
Джон Пол Кук - Архітектор систем і баз даних з Х'юстона, штат Техас. Спеціалізується на допомозі великим компаніям і користувачам в роботі з SQL Server, Oracle, і .NET Framework. Має кілька сертифікатів Microsoft і Oracle. [email protected]
2005. В установках файлу можуть з'явитися повідомлення про помилку, такі як The automatically saved settings file?Vssettings?