Основи SQL Everywhere – ЧАСТИНА 2

Почнемо розгляд прикладу з перевірки того, скопійована чи база даних Northwind на пристрій (рис 263) не має значення, в якому саме місці пристрою знаходиться цей файл

Зверніть увагу на те, що інтерфейс користувача утиліти Query Analyzer 30 містить чотири вкладки Вкладка Objects відображає всі локальні бази даних SQL Everywhere мобільного пристрою У ній можна підключитися до кожної з цих баз і переглянути її таблиці, стовпці, індекси і тп Вкладка SQL дозволяє вводити і виконувати інструкції SQL (точніше, підмножина інструкцій Т-SQL, реалізоване в SQL Everywhere) У вкладці Grid відображаються результати виконання запитів, а у вкладці Notes – статистична інформація про виконання запиту, така як кількість повернутих рядків, час виконання і виявлені помилки

Puc 263 База даних SQL Everywhere під назвою Northwind на пристрої Pocket PC 2003

Puc 264 Вкладка Objects утиліти Query Analyzer 30

Тепер натиснемо пером на імені файлу, щоб запустити утиліту Query Analyzer 30, в якій можна почати роботу з базою даних (рис 264)

У нашому прикладі у вкладці SQL ми введемо просту інструкцію SELECT, яка повертає всі рядки таблиці Employee бази даних Northwind (рис 265) Після введення запиту натисніть пером на зеленій стрілці, спрямованої вправо, яка розташована в нижній частині вікна утиліти, і запит буде виконаний

Якщо запит виконано успішно, то утиліта автоматично перемикається на вкладку Grid і відображає результати (рис 266) Якщо ж запит виконати не вдалося, то перемикання відбувається на вкладку Note, де можна переглянути повідомлення про помилки

Рис 265 Вкладка SQL уті-Рис 266 Вкладка Grid ути

літи Query Analyzer 30 літи Query Analyzer 30

Ми провели тільки короткий екскурс по утиліті Query Analyzer 30, насправді в ній приховано безліч додаткових корисних функцій Наприклад, у вкладці SQL ви можете створити кнопки часто запускаються запитів, щоб не вводити їх кожного разу заново Ви можете виконувати обмежене число маніпуляцій зі схемою бази даних (наприклад, додавати індекси і зовнішні ключі), що безцінне на етапі проектування і налагодження додатка Windows Mobile

Якщо додаток Windows Mobile підтримує стандарти Designed for Windows Mobile компанії Microsoft, то закриття аналізатора запитів клацанням на хрестику в правому верхньому куті вікна не зупиняє виконання додатки – воно просто перекладається у фоновий режим Якщо ви новачок у програмуванні, це може здатися вам неважливим У той же час це дозволяє часто використовуваних програм залишатися завантаженим в память, а значить, користувачі зможуть запускати їх швидше, ніж з диска Наслідком того, що Query Analyzer переводиться в фоновий режим роботи, є те, що база даних залишається відкритою Щоб вийти з утиліти Query Analyzer і закрити всі підключення до баз даних SQL Everywhere, потрібно вибрати в її меню, що знаходиться в нижній частині вікна, пункт ToolS1^ Exit

Створення бази даних SQL Everywhere

Мабуть, першим труднощами, з якою доводиться стикатися розробнику мобільних додатків, що працюють з SQL Everywhere, є створення фізичної бази даних Цю проблему можна вирішити безліччю способів ви вільні вибрати той з них, який буде найзручніше для вас і який буде відповідати вимогам програми Бази даних SQL Everywhere можуть бути створені декількома способами, серед яких наступні

■ За допомогою звичайного або керованого програмного коду

■ Візуально на пристрої за допомогою утиліти Query Analyzer 30

■ Візуально на компютері з використанням Visual Studio 2005

■ Візуально на компютері за допомогою сценаріїв і шаблонів в SQL Server Management Studio 2005

■ Автоматично за допомогою реплікації злиття

У наступних розділах ми коротко розглянемо всі ці технології і наведемо приклади

Створення бази даних SQL Everywhere за допомогою керованого програмного коду

Першим варіантом, який ми розглянемо, є створення бази даних SQL Everywhere за допомогою керованого програмного коду і використання Visual Studio 2005 і NET Compact Framework 20 Цей варіант особливо корисний у ситуаціях, коли виконується створення та продаж мобільних додатків великій групі користувачів, мережеві підключення і частота синхронізації яких неконтрольовані Наприклад, кілька років тому я створив додаток NET Compact Framework, що дозволяє лікарям вводити назви всіх медикаментів, які повинен приймати пацієнт, і прораховувати безпосередньо на мобільних пристроях можливі їх взаємодії Оскільки обчислення цих взаємодій досить складне, виникла необхідність використання на пристрої реляційної бази даних Проблема полягала в тому, що у мене не було ніякого контролю над мережевими підключеннями мобільних пристроїв різних лікарів до серверів в різних регіонах і до Інтернету для синхронізації Дані, необхідні цьому мобільному додатком на пристрої, використовувалися виключно для читання, а на серверах вони оновлювалися щокварталу Рішення полягало в тому, щоб регулярно публікувати нову версію програми, яке при першому запуску удаляло стару базу даних SQL РЄ та в процесі роботи створювало нову Схема цієї бази і самі дані розгорталися разом з додатком як файли CSV після завантаження даних до бази SQL РЄ ці файлу автоматично віддалялися Незважаючи на те що при першому запуску нової версії програми медикам доводилося кілька хвилин чекати, відсутність необхідності підключення до мережі і синхронізації даних з лишком компенсувала цей недолік

Динамічне створення бази даних SQL Everywhere під час роботи програми і навіть наповнення таблиць інформацією з керованого програмного коду безпосередньо на пристрої є відмінним рішенням для безлічі архітектур додатків Windows Mobile

Тепер прийшов час навести простий приклад створення бази даних SQL Everywhere в додатку VBNET Compact Framework

Якщо вам ніколи не доводилося створювати додатки Windows Mobile Smart Рада Device в Visual Studio і Net Compact Framework або якщо ви взагалі не

знайомі з мовами програмування C # і VBNET, то перед тим як виконувати приклад, краще ознайомитися із статтею Getting Started на сайті:

http://msdnmicrosoftcom/netframework/programming/netcf/ gettingstarted/defaultaspx

Якщо ви готові почати, запустіть Visual Studio 2005 і виконайте такі дії

1 У Visual Studio 2005 виберіть пункт меню File ^ New1^ Project, щоб відкрити діалогове вікно створення нового проекту

2 У списку типів проектів на лівій панелі розгорніть вузол Visual Basic або С #, залежно від того, яка з цих мов платформи NET ви віддаєте перевагу, а потім розгорніть вузол Smart Device

3 Виберіть платформу Windows Mobile для свого додатку (Pocket PC 2003, Smartphone 2003 і тп)

4 На панелі Templates з правого боку діалогового вікна виберіть пункт Device Application

5 Присвойте імя свого проекту і, при бажанні, змініть шлях розміщення (поле Location) і імя вирішення (поле Solution Name) Після цього клацніть на кнопці ОК

6 Visual Studio 2005 створить новий додаток NET Compact Framework Smart Device і для початку згенерує просту форму

Тепер, щоб зробити додаток сумісним з SQL Everywhere, слід додати в проект посилання на постачальника даних ADONET і простір імен System Data SqlServerCe

1 У меню Visual Studio виберіть пункт Projects Add Reference

2 У діалоговому вікні (рис 267) у вкладці NET в списку виберіть збірку System Data SqlServer Се Якщо в списку ця збірка відсутня, клацніть на вкладці Browse і виберіть файл <пристрій:> \ Program Files \ Microsof t Visual Studio 8 \ SmartDevices \ SDK \ SQL Server \ Mobile \ v30 \ System Data SqlServerCe dll Якщо по даному шляху файлу System Data SqlServerCe dll немає, значить, установка SQL Everywhere на компютері була проведена некоректно У цьому випадку поверніться до розділу Установка SQL Server Everywhere.

3 Закрийте діалогове вікно додавання посилання, клацнувши на кнопці ОК

4 Повторіть описане вище дії для простору імен System Data

Puc 267 Додавання посилання на SystemData

SqlServerCe

Тепер проект Smart Device готовий до роботи з SQL Everywhere На панелі Solution Explorer програми Visual Studio 2005 клацніть правою кнопкою миші на формі, автоматично створеної для проекту (наприклад, Forml vb), і виберіть у контекстному меню пункт View Code Змініть програмний код, щоб він виглядав так, як у наведеному нижче прикладі

Приклад програмного коду Visual BasicNET

Imports SystemIO

Imports SystemData

Imports SystemDataSqlServerCe

Imports SystemText

Imports SystemReflection

Public Class Forml

Private _sqlMobileDB As String Private _connection As String

Sub New()

InitializeComponent()

Dim strAppDir As String = PathGetDirectoryName([Assembly] GetExecutingAssembly()GetModules(0)FullyQualifiedName)

Me_sqlMobileDB = strAppDir + PathDirectorySeparatorChar ToStringO + &quotss2005bible sdf &quot

Me_connection = &quotData Source=&quot &amp _sqlMobileDB CreateDatabase()

CreateSchema()

InsertRows()

End Sub

Private Sub CreateDatabase()

If Not System10FileExists(_sqlMobileDB) Then

Dim eng As SqlCeEngine = New SqlCeEngine(_connection) engCreateDatabase()

End If End Sub

Private Sub CreateSchema()

Dim sql As String = &quotCREATE TABLE tb_clients (&quot &amp _

&quotclientld int NOT NULL IDENTITY (1, 1) primary key,&quot &amp _ &quotclientCode nvarchar(50) NULL, &quot &amp _

&quotclientName nvarchar(50) NOT NULL)&quot

Dim conn As SqlCeConnection = New SqlCeConnection(_connection) connOpen()

Dim cmd As New SqlCeCommand(sql, conn) cmdCommandType = CommandTypeText Try

cmdExecuteNonQuery()

Catch sqlex As SqlCeException DisplaySQLCEErrors(sqlex)

Finally

connClose() connDispose()

End Try End Sub

Public Sub InsertRows()

Dim sql As String = &quotINSERT INTO tb_clients (clientCode,

clientName) &quot &amp_

&quotVALUES (&quot &amp _

&quot 12345 , &quot &amp

&quot’Acme Corporation)&quot

Dim conn As SqlCeConnection = New SqlCeConnection(_connection) connOpen()

Dim cmd As New SqlCeCommand(sql, conn) cmdCommandType = CommandTypeText Try

cmdExecuteNonQuery()

Catch sqlex As SqlCeException DisplaySQLCEErrors(sqlex)

Finally

connClose ()

connDispose()

End Try End Sub

Public Sub DisplaySQLCEErrors(ByVal ex As SqlCeException)

Dim errorCollection As SqlCeErrorCollection = exErrors Dim bid As New StringBuilder()

Dim inner As Exception = exInnerException

Dim err As SqlCeError

For Each err In errorCollection

bidAppend(ControlCharsLf + &quot Error Code: &quot +_ errHResultToString()) bid Append (ControlChars Lf + &quot Message : 11 +_ errMessage)

bidAppend(ControlCharsLf + &quot Minor Err: &quot +_ errNativeErrorToString()) bid Append (ControlChars Lf + 11 Source : &quot + err Source)

Dim numPar As Integer

For Each numPar In errNumericErrorParameters If (numPar &lt&gt 0) Then

bidAppend(ControlCharsLf + &quot Num Par : &quot +_ numParToString())

End If Next numPar Dim errPar As String

For Each errPar In errErrorParameters If (errPar &lt&gt StringEmpty) Then

bidAppend(ControlCharsLf + &quot Err Par : &quot +_ errPar)

End If Next errPar

MessageBoxShow(bidToString(), &quotSQL Everywhere Error&quot)

Next err End Sub End Class

Скомпілюйте представлений програмний код і розгорніть його або на мобільному пристрої, підключеному до компютера через ActiveSync, або на одному з емуляторів, що поставляються в комплекті з Visual Studio 2005

У нашому прикладі програмний код створює базу даних SQL Everywhere під назвою ss2 005bible sdf в папці, в якій запускається додаток, що ми і бачимо у вікні Query Analyzer 30 на рис 268

Натисніть пером на зеленій стрілці в нижній частині вікна Query Analyzer 30, щоб побачити рядок, вставлену в таблицю tb_ clients

Якщо ви знайомі з програмуванням в ADONET у повноцінній середовищі NET Framework, то будете приємно здивовані, наскільки схожий програмний код в даному прикладі на той, який довелося б написати в ADONET для доступу до SQL Server 2000 або 2005 (наприклад, замість класу SqlConnections ми використовували SqlCeConnections, а замість SqlCommands – SqlCeCommands) У наведеному прикладі слід звернути увагу на деякі моменти По-перше, ми не тільки закриваємо підключення, але і видаляємо сам обєкт, після того як робота

зроблена Незважаючи на те що SQL Everywhere є багатокористувацької базою даних, підтримує безліч підключень, обєкт SqlCeConnections на мобільному пристрої займає багато памяті Не слід забувати, що програмний код буде запускатися на пристрої, память якої обмежена, а зміст колекцій непотрібних елементів – щодо ресурсномістка операція в середовищі Compact Framework Не забувайте закривати і видаляти обєкт SqlCeConnections, а також обєкти SqlCeCommands, SqlCeDataReaders, RemoteDataAccess і Replication, коли вони більше не потрібні Зверніть також увагу на використання відображення для визначення поточного каталогу, в якому запущена програма Щоб не доводилося жорстко програмувати шлях до бази даних в коді, краще розміщувати її в тому ж каталозі, в якому міститься і сама мобільна програма

Метод DisplaySQLCEErrors, наведений у прикладі, рекомендується додавати в усі проекти Smart Device, які використовують бази даних SQL Everywhere Якщо ви зіткнетеся з труднощами, цей метод забезпечить вас максимально можливою інформацією про конкретну помилку, викликаної винятком SQL Everywhere

Коли ви приступите до програмування більш складних завдань, що працюють з SQL Everywhere, то виявите, що повинен бути присутнім клас, службовець інтерфейсом до всіх основних операціях SQL Everywhere (ExecuteQuery, ExecuteNonQuery, ExecuteResultSet і тд) Існують дистрибутиви Microsoft Enterprise Data Access Application Block, вільно доступні для SQL РЄ, які без праці можна перетворити для роботи з SQL Everywhere Відмінний приклад ви можете знайти на сайті http://wwwbusinessanyplace net / p = daabcf

Створення бази даних SQL Everywhere в Query Analyzer 30

Ще одним варіантом створення бази даних SQL Enywhere є використання утиліти Query Analyzer 30 безпосередньо на мобільному пристрої або в емуляторі У першу чергу перевірте, чи встановлена ця утиліта на пристрої (це питання розглядалося вище у цій главі) Далі запустіть Query Analyzer 30 або з меню Start, або з файлу Program Files \ SQL Everywhere \ locale \ isqlw3 0 Ехе Після того як програма буде запущена, перейдіть на вкладку Objects і клацніть на жовтому значку бази даних і зеленої стрілкою на панелі інструментів у нижній частині вікна (рис 269)

Зверніть увагу на те, що одне і те ж діалогове вікно використовується і для підключення до існуючої бази даних, і для створення нової Так як в даному випадку ми створюємо нову базу, введіть її імя і шлях розміщення, після чого натисніть пером на кнопці New Database Після цього розкладка елементів вікна зміниться, дозволяючи задати порядок сортування, пароль доступу і / або шифрування вмісту бази Ці питання ми розглянемо в розділі Питання безпеки. Натисніть пером на кнопці Create в нижній частині діалогового вікна, після чого база даних з заданим вами іменем буде створена у вказаному вами каталозі

Рис 269 Створення бази даних SQL Everywhere в утиліті Query Analyzer 30

За угодою бази даних SQL Everywhere завжди мають розширення sdf,

На замітку яке асоційоване з утилітою Query Analyzer 30 (якщо SQL Everywhere встановлена ​​на мобільному пристрої) Незважаючи на те що у вас є можливість не здавати це розширення, в цьому випадку натискання на значку файлу бази даних не призведе до її відкриття в Query Analyzer 30

Тепер ви можете управляти створеною базою даних у вкладці Objects утиліти Query Analyzer 30, додаючи в неї таблиці, обмеження, ключі та індекси Водночас у вкладці SQL ви можете створювати запити, заповнюють таблиці даними

Як бачите, описаний ручний метод кілька незручний, враховуючи розміри екрану і механізм введення даних пристрою Windows Mobile Цю методику можна використовувати для швидкого створення початкової бази SQL Everywhere на пристрої за відсутності підключення до компютера розробки або реплікації злиття Якщо база даних буде містити більше однієї-двох таблиць, то наступні описувані методи здадуться вам зручніше

Створення бази даних SQL Everywhere в Visual Studio 2005

Однією з основних цілей створення пакета Visual Studio 2005 була реалізація єдиного порталу, в якому розробник міг би писати і тестувати програми, працювати з базами даних, переглядати сервери, працювати з керуючими бібліотеками і навіть переглядати Web-сторінки без необхідності залишати звичний інтерфейс Visual Studio Одним з найбільш вражаючих властивостей версії Visual Studio 2005 є те, що тепер у ній можна працювати з SQL Everywhere Зокрема, в Visual Studio 2005 ви можете виконувати наступні операції

■ Створювати бази даних SQL Everywhere, підключатися до них, створювати до них запити При цьому самі бази можуть бути розміщені як на компютері розробки, так і на підключеному до нього за допомогою ActiveSync пристрої Windows Mobile

■ Створювати запити до баз SQL Everywhere в графічному інтерфейсі конструктора запитів

■ Використовувати метод перетягування для автоматичного звязування даних з елементами управління, генеруючи при цьому програмний код для управління цими звязками в процесі роботи програми

■ Не хвилюватися про згортання і розгортання баз даних SQL Everywhere разом з проектом Smart Device, так як ці завдання Visual Studio 2005 повністю бере на себе

Обсяг цієї книги дозволяє привести лише побіжний огляд цих функцій У наступному прикладі ми створимо нову базу даних SQL Everywhere в програмі Visual Studio 2005 Запустіть цю програму і виконайте наступні дії

1&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Виконайте пп 1-4 з прикладу розділу Створення бази даних SQL Everywhere за допомогою керованого програмного коду, дійшовши до місця, в якому буде існувати порожній проект Smart Device, готовий до роботи

2 У меню Visual Studio 2005 виберіть пункт Data ^ Add New Data Source і на панелі Where will the application get data from діалогового вікна Choose a Data Source Type клацніть на жовтому значку Database Клацніть на кнопці Next

3&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp На наступній сторінці діалогового вікна клацніть на кнопці New Connection Клацніть на кнопці Change діалогового вікна Add Connection і виберіть як типу джерела даних Microsoft SQL Server Mobile Edition Клацніть на кнопці ОК

4&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp У діалоговому вікні Add Connection ви можете або створити нову, або відкрити вже існуючу базу даних SQL Everywhere, яка знаходиться або на сервері розробки, або на підключеному за допомогою ActiveSync мобільному пристрої (рис 2610) Так як в даному випадку нас цікавить створення нової бази даних SQL Everywhere, клацніть на кнопці Create

5 У діалоговому вікні створення нової бази даних SQL Server 2005 Everywhere Edition введіть шлях до нової бази даних або скористайтеся кнопкою Browse Присвойте файлу бази даних імя типу SS2005BIBLE SDF (рис 2611) Зазначу, що в даному прикладі ми залишимо порожнім поле для введення пароля, однак на практиці краще його задавати, і про це Visual Studio 2005 вас попередить, коли ви клацнете на кнопці ОК

Puc 2610 Діалогове вікно Add Connection Puc 2611 Діалогове вікно створення нової

бази даних SQL Everywhere

6 У вікні попередження про доцільність завдання пароля до бази даних клацніть на ОК, щоб продовжити процес Ви повернетеся до діалогового вікна Add Connection, в якому потрібно клацнути на кнопці ОК, щоб повернутися до майстра конфігурування джерела даних

7 Щойно створена база даних тепер буде відображатися в полі Which data connection should your application use to connect the database. Клацніть на кнопці Next, щоб продовжити роботу з прикладом

8 Visual Studio 2005 відкриє вікно з попередженням про те, що якщо ви плануєте створювати та розгортати проект разом з базою даних SQL Everywhere, то остання повинна бути включена в проект Це прекрасне нововведення, оскільки старі версії Visual Studio розцінювали бази даних SQL РЄ як вміст, в результаті чого при кожному створенні проекту ці бази заново розгорталися на мобільному пристрої або в емуляторі Коли ви отримаєте це попередження, клацніть на кнопці Yes, щоб скопіювати створену базу даних в поточний проект Smart Device

9 Тепер майстер конфігурування джерела даних дозволить вам створити обєкт набору даних DataSet, складений з однієї або декількох таблиць SQL Everywhere Так як в новій базі даних поки ще немає таблиць, на сторінці Choose Your Database Objects майстра поки ще нічого вибирати Однак якщо ви будете підключатися до існуючої базі, то можете створити набір даних ADONET, який додаток буде використовувати для взаємодії з базою даних Варто відзначити ще одну деталь Незважаючи на те що Visual Studio вже знає, що джерелом даних є база даних SQL Everywhere, ви побачите список обєктів, що містить

представлення, збережені процедури і функції, які, як ми знаємо, цією редакцією зараз не підтримуються Єдиним обєктом баз даних, який можна використовувати для формування набору даних, є таблиці

5&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Клацніть на кнопці Finish, щоб завершити роботу майстра

Зверніть увагу на те, що у вікні Solution Explorer програми Visual Studio тепер відображається копія щойно створеної бази даних SQL Everywhere, яка була додана в проект з параметром Build Action of Content і значенням параметра Copy to Output Directory, встановленим у Copy if Newer Як вже говорилося, процес програмування / створення / розгортання мобільних додатків проходить багато ітерацій, кожна з яких забирає досить багато часу Тепер розгортання бази даних як компоненту проекту вже не буде частиною цього процесу в кожній ітерації

Отже, ми готові до інтеграції додатка Smart Device і бази даних SQL Everywhere, не покидаючи комфортний світ Visual Studio 2005 Щоб переглянути інші засоби інтеграції Visual Studio, що відносяться до SQL Everywhere, виберіть у меню пункт View ^ Server Explorer або Data ^ Show Data Sources У створену базу даних ви можете додати таблиці, стовпці, індекси тощо, після чого включити ці обєкти в один або кілька наборів даних або навіть перетягнути в конструктор форм, щоб повязати з елементами управління NET Compact Framework, такими як сітки перегляду, комбіновані списки Більш докладно з цим питанням ви можете ознайомитися на сайті: http://msreadinesscom/WS_abstractaspeid=15003229

Створення бази даних SQL Everywhere в SQL Server 2005 Management Studio

Як і Visual Studio, SQL Server 2005 Management Studio дозволяє створювати бази даних SQL Everywhere і керувати ними практично так само, як і при роботі з базами даних SQL Server 2005 Компанія Microsoft просунула далеко вперед ті засоби інтеграції з мобільними базами даних, які існували в SQL Server 2000 Enterprise Manager Тепер кошти інтеграції включають наступні

■ Підтримка SQL Editor

■ Можливість створювати, наповнювати і модифікувати бази даних SQL Everywhere

■ Керований API, здатний реалізувати бізнес-логіку при реплікації злиття

■ Підтримка статей, призначених тільки для завантаження

■ Підтримка фільтрованих статей

■ Графічний перегляд планів виконання запитів

■ Поліпшені майстра конфігурування реплікацій

■ Підтримка SQL Everywhere як приймача служби інтеграції SQL Server

Настав час розглянути приклад створення бази даних SQL Everywhere в SQL Server Management Studio, щоб проілюструвати деякі з цих можливостей Виконавши наступні дії, ми створимо нову базу даних SQL Everywhere прямо на робочому столі, навіть не підключаючи мобільний пристрій

1&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Запустіть SQL Server 2005 Management Studio

2&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp У діалоговому вікні, Connect Те Server виберіть у якості типу сервера SQL Server Everywhere, а в списку баз даних – пункт New Database

3&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Як тільки ви виберете New Database зі списку баз даних, відкриється діалогове вікно, в якому будуть відображені імя створюваної бази SQL Everywhere і шлях до неї, а також пароль і порядок сортування У полі імені бази даних введіть <пристрій:> \ \ SS2005BIBLE SDF Залиште поле пароля порожнім і клацніть на кнопці ОК

4&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp SQL Server 2005 Management Srudio попередить вас про те, що ви залишили порожнім поле пароля доступу до бази даних SQL Everywhere У реальних додатках з міркувань безпеки слід завжди задавати цей пароль, проте в даному випадку клацніть на кнопці Yes, щоб продовжити роботу з прикладом

5&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Ви знову повернетеся до діалогового вікна Connect to Server з уже заданим типом сервера і імям файлу бази даних Клацніть на кнопці Connect, щоб закрити це діалогове вікно (рис 2612)

Puc 2612 Підключення до бази даних SQL Everywhere e SQL Server 2005 Management Studio

6&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp На панелі Object Explorer утиліти Management Studio зявиться новий вузол щойно створеної бази даних SQL Everywhere Зверніть увагу на те, що графічне представлення цієї бази нічим не відрізняється від звичайних баз даних SQL Server 2005

Тепер можете клацнути у вікні Object Explorer правою кнопкою миші на базі даних SQL Everywhere, вибрати в контекстному меню пункт New Query і працювати з цією базою даних, як з будь-якої іншої Крім виконання інструкцій DDL і DML, ви можете графічно проектувати схему бази даних SQL Everywhere Щоб спробувати виконати цю операцію, клацніть правою кнопкою миші на вузлі Tables бази даних SQL Everywhere і виберіть у контекстному меню пункт New Table Відкриється діалогове вікно (рис 2613), що дозволяє додавати в базу даних таблиці без написання коду SQL

Ми тільки почали відкривати для себе те безліч операцій, які можна виконати над базами даних SQL Everywhere в утиліті Management Studio, але компанія Microsoft дозволить заповнити цей недолік знань У утиліті SQL Everywhere Books Online містяться глави How То, що описують виконання поширених завдань управління базою даних за допомогою керованого програмного коду, запитів SQL і інтерфейсу SQL Server 2005 Management Studio

Рис 2613 Діалогове вікно New Table

Створення бази даних SQL Everywhere за допомогою реплікацій злиття

Цією темою ми завершуємо розгляд можливих варіантів створення бази даних SQL Everywhere Пропонована методика має ряд несподіваних переваг у розгортанні великих проектів на мобільних пристроях Єдина складність, з якою доведеться зіткнутися в мобільних додатках, що використовують SQL Everywhere, – це зміни схеми бази даних після її розгортання Реплікації злиття пропонують варіант створення нової бази даних передплатників при першому реплікації з SQL Server, і це має ряд достоїнств

■ Замість розгортання вихідної бази даних SQL Everywhere кожною версією мобільного застосування, ви можете отримати повну і оновлену базу даних, створену на пристрої динамічно, при першому виконанні мобільного додатку

■ Якщо необхідно внести істотні зміни в схемі або зміни, які не можуть бути автоматично поширені серед передплатників у реплікації злиття з сервером, ви можете зобовязати мобільних користувачів завантажити всі зміни, видалити базу даних SQL Everywhere на пристрої і перезапустити програму В результаті буде створена нова база даних з найсвіжішою схемою

■ Якщо з якоїсь причини якої-небудь мобільний користувач видалив або пошкодив без можливості відновлення базу даних SQL Everywhere на своєму пристрої, нова може бути створена динамічно, без необхідності установки на пристрій нових файлів

■ Якщо існує серверна база даних і ви хочете створити базу SQL Everywhere, яка відображатиме всю схему або її підмножина, можете опублікувати серверні статті, які хочете включити в базу SQL Everywhere, і автоматично згенерувати базу SQL Everywhere для передплатників серверної публікації

Реплікація злиття буде детально розглянута далі в цьому розділі, зараз же наведемо приклад, що демонструє використання параметра AddOption CreateFatabase реплікації злиття SQL Everywhere

Приклад програми VBNET

Imports SystemData

Imports SystemDataSqlServerCe

‘Пропонований програмний код слід помістити в конструктор або в подія Load обєкта або форми Startup проекту Smart Device, щоб реплікація завжди виконувалася при завантаженні програми Якщо база даних SQL Everywhere що не знайдено локально, вона буде створена

Dim repl As SqlCeReplication = GetReplication() replSynchronize()

‘Всі властивості реплікації, наведені нижче, повинні бути змінені, щоб відповідати середовищі вашої реплікації злиття Значення, які ви бачите в тексті програми,

‘Використані виключно в якості ілюстрації

Public Function GetReplication() As SqlCeReplication

Dim databaseName As String = &quot\My Documents\SS2005BIBLESDF&quot

Dim connection As String = &quotData Source=&quot &amp databaseName Dim repl As New SqlCeReplication()

replInternetUrl = &quothttp://dellxps/repl/sqlcesa30dll&quot replPublisher = &quotDELLXPS\SQLSERVER&quot replPublisherDatabase = &quotAdventureworks&quot

replPublisherSecurityMode = SecurityTypeNTAuthentication replPublication = &quotAW_PUB&quot replSubscriber = &quotDDS_PPC&quot

replSubscriberConnectionString = connection Параметр AddOptionCreateDatabase, показаний нижче,

‘Дозволяє додатку запускатися без присутності бази даних SQL Everywhere на пристрої, і потім створювати її динамічно при першому виклику функції Synchronize ()

If Not System10FileExists(databaseName) Then replAddSubscription(AddOptionCreateDatabase)

End If Return repl End Function

Модернізація існуючої бази даних SQL РЄ 20

Якщо є мобільна база даних SQL РЄ 20 і ви хочете модернізувати її до SQL Everywhere, то компанія Microsoft пропонує для виконання цієї операції спеціальну утиліту командного рядка Зауважу, що ця утиліта запускається тільки на мобільному пристрої, її не можна виконати на настільному компютері

У першу чергу вам потрібно мати на мобільному пристрої встановлені ядра обох баз даних: SQL Server РЄ 20 і SQL Everywhere Ці два продукти успішно уживаються на одному пристрої Встановіть послідовно дистрибутив SQL РЄ САВ, відповідає операційній системі та архітектури процесора, а потім SQL Everywhere CAB

За допомогою File Explorer або ActiveSync скопіюйте файл upgrade ехе, розташований в каталозі <пристрій:> \ Program Files \ Microsoft Visual Studio 8 \

SmartDevices \ SDK \ SQL Server \ Mobile \ v30 \ [платформа] \ [процесор], на мобільний пристрій, помістивши його в папку, яка містить базу даних SQL РЄ 20, яку ви збираєтеся модернізувати (Для пристроїв Windows Mobile 5/Windows РЄ 50 також існує відповідна папка)

Якщо ви клацнете на файлі upgrade ехе на своєму пристрої, відкриється повідомлення про синтаксисі використання цієї утиліти командного рядка (рис 2614)

Відкрийте на пристрої меню Run, натиснувши і утримуючи клавішу або Потім клацніть на значку годин в правому верхньому куті екрана та потримайте кнопку миші, відпустіть клавішу , виберіть Run і введіть рядок upgrade / з [імя_старой_бази_ SQLCE] / d [імя_новой_бa3u_SQL_Everywhere]

У нашому прикладі ми модернізуємо базу даних IbuySpyStore з SQL РЄ 20 в SQL Everywhere, для чого введемо в меню Run пристрої наступний рядок:

Upgrade /s IbuySpyStoresdf /d ibs30sdf

На рис 2615 показані файл вийшла бази даних SQL Everywhere ibs3 0 sdf і повідомлення про успішне завершення операції

Рис 2614 Повідомлення про синтаксисі ис-Рис 2615 Висновок утиліти

користування утиліти модернізації 6а-модернізації бази даних

зи даних SQL РЄ до SQL Everywhere в SQL Everywhere

Слід зазначити, що вихідна база даних залишилася на місці Якщо під час модернізації виникнуть які-небудь проблеми, то буде створений файл протоколу з їх описом Цей файл можна відкрити і прочитати за допомогою програми Pocket Word У загальному випадку база даних результату буде на 10-17% менше, ніж вихідна (у нашому прикладі вона зменшилася з 276 до 236 Кбайт) Якщо вихідна база містила будь стовпці з типом ntext, то результуюча база буде більше

На закінчення слід сказати, що утиліта upgradeexe дозволяє задати пароль для ис-Ходна бази і прапор шифрування для результуючої бази SQL Everywhere (питання безпеки ми розглянемо далі в окремому розділі)

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

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


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

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

Ваш отзыв

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

*

*