Основы разработки с SQL Azure

advertisement
PBC202ILL
Лабораторная работа
Основы разработки с SQL
Azure
СОДЕРЖАНИЕ
ОБЗОР ......................................................................................................................................................................... 3
УПРАЖНЕНИЕ 1: ПОДГОТОВКА УЧЕТНОЙ ЗАПИСИ SQL AZURE ...................................................................... 6
Задача 1 – создание и настройка сервера в SQL Azure ....................................................................................6
УПРАЖНЕНИЕ 2: ВЫПОЛНЕНИЕ DDL И DML ЗАПРОСОВ ..................................................................................11
Задача 1 – создание новой базы данных ........................................................................................................12
Задача 2 – управление базой данных с помощью Database Manager for SQL Azure ...................................13
Задача 3 – управление базой данных с помощью SQL Server Management Studio .....................................18
Задача 4 – создание учетных записей и пользователей базы данных .........................................................21
Задача 5 – создание таблиц, индексов и запросов ........................................................................................25
УПРАЖНЕНИЕ 3: РАБОТА С SQL AZURE ИЗ ПРИЛОЖЕНИЯ WINDOWS AZURE .............................................29
Задача 1 – создание тестовой базы данных в SQL Azure ...............................................................................29
Задача 2 – создание проекта в Visual Studio ...................................................................................................30
УПРАЖНЕНИЕ 4: РАБОТА С ИСПОЛЬЗОВАНИЕМ РАЗЛИЧНЫХ МЕХАНИЗМОВ ДОСТУПА .........................41
Задача 1 –открытие заготовки решения и изучение общей функциональности .........................................42
Задача 2 – подключение к SQL Azure с использованием ADO.NET ...............................................................44
Задача 3 – подключение к SQL Azure с использованием ODBC .....................................................................49
Задача 4 – подключение к SQL Azure с использованием OLEDB ...................................................................53
Задача 5 – подключение к SQL Azure с использованием Entity Framework .................................................58
Задача 6 – подключение к SQL Azure с использованием сторонних технологий ........................................66
РЕЗУЛЬТАТ ................................................................................................................................................................67
Внимание:
1. Для выполнения данной лабораторной работы
необходима учетная запись Windows Azure
2. Все необходимые для выполнения данной работы
материалы находятся в каталоге
C:\WAPTK\Labs\IntroToSQLAzureVS2010
3. Пароль для входа в систему: Passw0rd!
2
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Обзор
SQL Azure является реализацией СУБД Microsoft SQL Server для Windows Azure. Работа с SQL Azure
будет достаточно простой для большинства разработчиков, поскольку поддерживается большая
часть инструментов и способов разработки, доступных при использовании SQL Server.
Тем не менее, между SQL Azure и SQL Server существуют некоторые отличия. Некоторые из них
связаны с архитектурными особенностями SQL Azure, в то время как причиной других является
относительная новизна продукта.
В ходе данной лабораторной работы вы познакомитесь с некоторыми аспектами
администрирования SQL Azure – добавлением учетной записи, созданием и управлением базой
данных. Вы создадите простое приложение для Windows Azure, позволяющее управлять записями
в таблице Contact базы данных, работающей под управлением SQL Azure.
Задачи
В данной лабораторной работе вы:

Приобретете навыки работы с СУБД SQL Azure для использования в своих приложениях.

Научитесь выполнять административные задачи:

◦
Создавать учетные записи в SQL Azure
◦
Создавать базу данных
◦
Добавлять пользователей БД и управлять их полномочиями
Научитесь выполнять запросы:
◦
Data Definition Language (DDL) выражения для создания таблиц и индексов
◦
Data Manipulation Language (DML) для добавления и извлечения записей

Создадите простое ASP.NET приложение для работы с базой данных.

Получите навыки работы с БД SQL Azure с использованием различных технологий.
Технические требования
Для выполнения данной лабораторной работы вам потребуется наличие:

3
Microsoft .NET Framework 4.0
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.

Microsoft Visual Studio 2010

SQL Server Management Studio 2008 R2 Express Edition

Windows Azure Tools for Microsoft Visual Studio 1.4

Наличие учетной записи для доступа к SQL Azure и созданного сервера
◦
Настроенный SQL Azure Firewall для доступа с машины, используемой для
выполнения работы
Внимание: данная работа должна выполняться с последней версией инструментария Windows
Azure Tools for Visual Studio 2010 (версия 1.4) и описывает работу с административным порталом
Windows Azure Platform Management Portal.
Вам потребуется наличие учетной записи для доступа к SQL Azure. Для самостоятельной
регистрации посетите сайт http://www.microsoft.com/windowsazure/sqlazure/.
Настройка системы
[Данная процедура была выполнена для вас]
Для вашего удобства большая часть кода представлена в виде фрагментов (code snippets),
зарегистрированных в Visual Studio. Чтобы проверить наличие требуемых для выполнения работы
компонентов и установить фрагменты кода:
Откройте Проводник Windows (Windows Explorer) и перейдите в каталог Source\Setup.
Дважды щелкните на файле Dependencies.dep для запуска утилиты Dependency Checker,
используя которую, установите фрагменты кода и недостающие компоненты.
В случае появления диалога User Account Control, подтвердите необходимость
продолжения выполнения.
Внимание: данная операция требует повышения полномочий. Расширение .dep
используется утилитой Dependency Checker. Для получения дополнительной информации
об использовании утилиты обратитесь к документу Setup.docx, находящемуся в
подкаталоге Assets в каталоге с материалами к данной работе.
4
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Использование фрагментов кода
(Code Snippets)
В течение выполнения всей лабораторной работы вы будете добавлять в проект фрагменты кода.
Для вашего удобства большая часть таких фрагментов оформлена в виде зарегистрированных в
Visual Studio фрагментов, что позволяет добавлять их, а не вводить вручную.
Если вы не знакомы с концепцией использования фрагментов кода в Visual Studio, обратитесь к
документу Setup.docx, находящемуся в подкаталоге Assets в каталоге с материалами к данной
работе.
Упражнения
Данная лабораторная работа включает следующие упражнения:
Подготовка учетной записи SQL Azure
Выполнение DDL и DML запросов – создание таблиц и индексов
Работа с SQL Azure из приложения Windows Azure
Работа с использованием различных механизмов доступа
Приблизительное время выполнения данной работы: 60 минут.
Внимание: при первом запуске Visual Studio вам будет предложено выбрать один из имеющихся
наборов настроек. Каждый набор ориентирован на определенный стиль разработки и
определяет схему размещения окон, поведение редакторов, перечень доступных фрагментов
кода и другие настройки. Описанные ниже действия расчитаны на использование набора
настроек под названием «General Development Settings». Если вы выберете другой набор
настроек, порядок выполнения тех или иных действий может отличаться от описанного.
5
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Упражнение 1: Подготовка учетной
записи SQL Azure
В данном упражнении вы подключитесь к SQL Azure с использованием учетной записи, создадите
сервер БД и добавите пользователя. Затем вы повторно подключитесь к SQL Azure, чтобы начать
работу с созданной базой данных.
Задача 1 – создание и настройка сервера в SQL Azure
В этом упражнении вы подключитесь к административному порталу SQL Azure с использованием
имеющейся учетной записи.
Перейдите на портал Windows Azure, располагающийся по адресу
https://windows.azure.com.
Войдите в систему, используя учетную запись Windows Live.
Рисунок 1
Подключение к административному порталу Azure Services с использованием учетной
записи Windows Live
6
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
На стартовой странице портала Windows Azure, щелкните по кнопке New Database
Server.
Рисунок 2
Создание сервера БД в SQL Azure
Если вы ранее не создавали сервер БД, выполните эту процедуру, иначе можете
пропустить это упражнение.
Чтобы создать сервер, выберите подписку из списка в левой панели. Нажмите кнопку
Create на панели Server.
Рисунок 3
Создание сервера БД в SQL Azure
7
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Выберите расположение из выпадающего списка Region, затем нажмите кнопку Next.
Данная настройка определяет, где географически будет расположена база данных.
Рисунок 3
Выбор места размещения БД
Введите имя и пароль администратора и нажмите кнопку Next.
Рисунок 4
Ввод имени и пароля администратора БД
8
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Внимание: учетная запись администратора используется для управления сервером базы
данных. Не используйте его в строках подключения, где он может быть похищен
третьими лицами.
Пароль должен удовлетворять приведенным ниже требованиям.
Нажмите кнопку Finish для завершения создания сервера. Правила брандмауэра вы
настроите далее в этом упражнении.
Рисунок 5
Диалог настройки правил брандмауэра
9
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
После завершения будет отображена подробная информация о созданном сервере.
Рисунок 6
Информация о серверах SQL Azure
Внимание: информация о сервере, в том числе, содержит его полное доменное имя в
формате:
<ServerName>.database.windows.net
где <ServerName> указывает на физический сервер, например,
a9ixtp7pux.database.windows.net.
Раскройте узел подписок на левой панели и щелкните на имени добавленного сервера.
Страница Server Information позволяет управлять основными настройками сервера.
Рисунок 7
Страница свойств сервера БД SQL Azure
10
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Раскрывающийся список Firewall Rules позволяет указать перечень IP-адресов
компьютеров, имеющих возможность подключения к SQL Azure Server. По умолчанию
все подключения запрещены, поэтому обязательно настройте список доступа, чтобы
клиенты могли подключаться к серверу.
Рисунок 8
Настройка правил брандмауэра SQL Azure
Внимание: для применения правил брандмауэра может потребоваться некоторое время.
Вы создали сервер БД и настроили его для выполнения следующих шагов лабораторной
работы. Подключиться к работающей в SQL Azure базе данных можно из любой точки
земного шара.
Упражнение 2: Выполнение DDL и
DML запросов
В этом упражнении вы добавите базу данных, создадите ее структуру – несколько таблиц и
индексов, после чего выполните ряд запросов к данным. Для работы вы сможете воспользоваться
двумя инструментами. Первый - Database Manager for SQL Azure – доступный из
11
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
административного портала Windows Azure веб-интерфейс на основе Silverlight. Второй
инструмент – это давно знакомый и привычный SQL Server Management Studio. Вы увидите, что он
одинаково полезен и для управления базами данных SQL Azure.
Задача 1 – создание новой базы данных
В левой панели административного портала Windows Azure выберите Database.
В левой панели найдите узел Subscriptions, последовательно разверните проект,
выберите имя интересующего вас сервера, после чего нажмите кнопку Create на
панели инструментов Database.
Рисунок 9
Создание новой базы данных
В диалоговом окне Create Database укажите имя базы данных (поле Database name) например HoLTestDB (в примерах ниже предполагается, что база данных называется
так), выберите издание (Edition) Web Edition и установите максимальный размер базы
данных (поле Maximum size) равным 1 GB.
12
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 10
Свойства создаваемой базы данных
Внимание: в данной лабораторной работе вы создаете базу данных с помощью
административного портала SQL Azure. Кроме того, поддерживается DDL-конструкция
языка T-SQL CREATE DATABASE, позволяющая указать редакцию базы данных (Web или
Business) и ее максимальный размер. Например, чтобы создать базу данных редакции
Business, максимальный размер которой равен 30GB, следует воспользоваться
следующей командой T-SQL:
CREATE DATABASE HolTestDB (MAXSIZE = 30GB)
После достижения базой данных максимального размера добавление в нее записей
становится невозможным до удаления части данных.
Задача 2 – управление базой данных с помощью Database Manager for SQL Azure
В этой задаче вы воспользуетесь инструментом Database Manager for SQL Azure, веб-приложением
на основе Silverlight, для подключения к созданной базе данных, создания и заполнения данными
таблицы и последующего запроса ее содержимого.
Разверните узел сервера в левой панели, выберите базу данных HoLTestDB и нажмите
кнопку Manage на панели инструментов.
13
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 11
Управление базой данных
На странице входа введите имя учетной записи и пароль и нажмите кнопку Connect.
Рисунок 12
Ввод реквизитов для входа в утилиту Database Manager
14
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Дождитесь подключения к базе данных и отображения начальной страницы.
Рисунок 13
Утилита Database manager. Начальная страница
В группе Operations на панели инструментов нажмите New Table.
Рисунок 14
Создание таблицы
15
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
В интерфейсе создания таблицы установите ее имя (поле Name) в People.
Нажимая кнопку + Column, добавьте три столбца, как показано в таблице ниже.
Имя колонки
Тип
Is Identity?
Is Required?
Is Primary Key?
ID
Int
Yes
Yes
Yes
Name
nvarchar(50)
No
Yes
No
Age
Int
No
Yes
No
Рисунок 15
Определение схемы таблицы
Нажмите кнопку Save, находящуюся в группе Operations панели инструментов.
Рисунок 16
Сохранение схемы таблицы
После сохранения таблицы нажмите кнопку Data в группе Context панели
инструментов.
Нажимая кнопку + Row, добавьте записи в таблицу. Значения для колонок Name и Age
возьмите из приведенной ниже таблицы.
16
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Name
Age
Alexandra
16
Ian
18
Marina
45
Рисунок 17
Добавление строк в таблицу
Повторите предыдущий шаг для добавления всех записей, после чего сохраните
данные нажатием кнопки Save в группе Operations панели инструментов.
Далее перейдите к закладке Database (в верхнем левом углу страницы) и нажмите
кнопку New Query в группе Operations панели инструментов.
В окне запроса введите следующее выражение T-SQL, извлекающее все строки из
таблицы People и нажмите кнопку Execute в группе Run панели инструментов.
Убедитесь в том, что результат содержит предварительно введенные вами записи.
T-SQL
select * from People
17
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 18
Выполнение запроса к базе данных
Задача 3 – управление базой данных с помощью SQL Server Management Studio
В этой задаче вы будете работать с SQL Server с помощью привычного инструмента - SQL Server
Management Studio.
Откройте SQL Server Management Studio из меню Start | All Programs | Microsoft SQL
Server 2008 R2 | SQL Server Management Studio. Отобразится диалог ввода реквизитов.
В диалоге Connect to Server введите реквизиты. Убедитесь, что выбран тип
аутентификации SQL Server Authentication, поскольку в текущий момент SQL Azure
поддерживает только его.
Внимание: замените [SERVERNAME] вашим именем сервера
(«Имя_сервера».database.windows.net.)
18
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 19
Подключение к SQL Azure с использованием SQL Server Management Studio
Нажмите кнопку Connect.
В панели Object Explorer отобразится структура базы данных. Обратите внимание на то,
что представление базы данных SQL Azure не отличается от традиционной.
Рисунок 20
Структура базы данных HoLTestDB в панели Object Explorer
В дереве Object Explorer выберите базу данных HoLTestDB и нажмите кнопку New
Query на панели инструментов.
19
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 21
Вызов окна создания запроса
У вас открылось окно создания запроса. Чтобы убедиться в подключении к БД SQL
Azure, можно воспользоваться встроенной функцией @@version. Введите
приведенный ниже запрос и нажмите кнопку Execute. Полученный результат
отображает редакцию и версию Microsoft SQL Azure.
T-SQL
SELECT @@version
Рисунок 22
Запрос версии SQL Azure
Замените предыдущий запрос приведенным ниже и нажмите кнопку Execute.
Убедитесь в том, что результат отображает список доступных баз данных.
T-SQL
SELECT * FROM sys.databases
20
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 23
Результаты запроса, отображающего список доступных баз данных
Чтобы получить имя базы данных, в контексте которой работает текущее подключение,
выполните приведенный ниже запрос.
C#
SELECT db_name()
Рисунок 24
Запрос текущей базы данных
Не закрывайте окно запроса, оно потребуется при работе над следующей задачей.
Задача 4 – создание учетных записей и пользователей базы данных
Как и SQL Server, SQL Azure позволяет создавать дополнительные учетные записи и ассоциировать
их с пользователями базы данных. В данной задаче вы добавите учетную запись для входа, после
чего создадите ассоциированного с ней пользователя базы данных HoLTestDB.
21
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Откройте новое окно запроса, подключенное к базе данных master. Чтобы сделать это,
в панели Object Explorer раскройте узел System Databases, расположенный внутри узла
Databases, и выберите элемент master. Затем нажмите кнопку New Query на панели
инструментов.
Рисунок 25
Открытие окна запроса в контексте БД master
Внимание: использовать уже открытое ранее окно запроса, подключенное к БД
HoLTestDB, нельзя без закрытия текущего подключения. Инструкция USE
<имя_базы_данных> не работает в SQL Azure. Таким образом, для изменения текущей БД
необходимо открыть новое окно запроса или выполнить процедуру разрыва и
повторного соединения.
Создайте учетную запись, выполнив следующий запрос:
T-SQL
CREATE LOGIN HoLUser WITH password='Password1'
Внимание: рекомендуется указать уникальный пароль и использовать его далее в ходе
выполнения данной лабораторной работы. В противном случае настоятельно
рекомендуется удалить учетную запись после завершения выполнения работы. Чтобы
сделать это, выполните в контексте базы данных master следующий запрос:
DROP LOGIN HoLUser
22
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Вернитесь в подключенное к базе данных HoLTestDB окно запроса. Если вы закрыли
его, то откройте повторно, выбрав базу данных HoLTestDB в панели Object Explorer и
нажав кнопку New Query.
В окне запроса выполните следующую команду, добавляющую нового пользователя в
базу данных HoLTestDB. Новый пользователь ассоциируется с учетной записью HoLUser.
T-SQL
-- Create a new user from the login and execute
CREATE USER HoLUser FROM LOGIN HoLUser
Теперь добавьте пользователя в роль db_owner базы данных HoLTestDB, выполнив
следующий запрос:
T-SQL
-- Add the new user to the db_owner role and execute
EXEC sp_addrolemember 'db_owner', 'HoLUser'
Внимание: сделав пользователя участником роли db_owner, вы присвоили ему очень
широкий набор полномочий. В реальной ситуации следует руководствоваться
принципом наименьших полномочий.
Измените используемого в текущем подключении пользователя на вновь созданного
HoLUser. Чтобы сделать это, щелкните правой кнопкой мыши внутри окна запросов,
выберите пункт Connection, после чего щелкните на Change Connection.
23
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 26
Изменение свойств подключения к базе данных
В диалоге Connect to Database Engine замените имя учетной записи (поле Login) на
HoLUser и укажите пароль (поле Password) – значение, которое вы указали при
создании учетной записи.
Рисунок 27
Подключение к базе данных от имени другой учетной записи
24
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Нажмите кнопку Options, чтобы отобразить расширенный перечень настроек.
Перейдите на закладку Connection Properties и убедитесь в том, чтоб выбрана база
данных HoLTestDB. Если текущее значение отличается, потребуется впечатать его в
поле Connect do database, поскольку в раскрывающемся списке необходимое значение
может отсутствовать. Нажмите кнопку Connect.
Рисунок 28
Подключение к указанной базе данных
Внимание: теперь вы подключены к базе данных от имени пользователя HoLUser. В
оставшейся части упражнения вы будете работать в контексте данного пользователя.
Задача 5 – создание таблиц, индексов и запросов
В окне запроса замените содержимое приведенным ниже фрагментом, создающим
таблицу Contact, и выполните его.
25
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
T-SQL
CREATE TABLE [Contact](
[ContactID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
[Title] [nvarchar](8) NULL,
[FirstName] [nvarchar](50) NOT NULL,
[LastName] [nvarchar](50) NOT NULL,
[EmailAddress] [nvarchar](50) NULL,
[Phone] [nvarchar](30) NULL,
[Timestamp] [timestamp] NOT NULL
)
Внимание: SQL Azure требует наличия кластерного индекса у всех таблиц. Если вы
создадите таблицу без кластерного индекса, то не сможете добавлять в нее строки.
Поскольку кластерный индекс определяет физический порядок записей на диске, влияя
на скорость выполнения некоторых запросов, иногда целесообразно применить его не к
содержащему первичный ключ столбцу.
Создайте индекс по столбцу EmailAddress. Для этого выполните запрос:
T-SQL
CREATE INDEX IX_Contact_EmailAddress
ON Contact(EmailAddress)
Добавьте запись в таблицу Contact:
T-SQL
INSERT INTO [Contact]
([Title],[FirstName],[LastName],[EmailAddress],[Phone])
VALUES
('Mr','David','Alexander','davida@fabrikam.com','555-1234-5555')
Теперь выполните выборку данных с отображением плана выполнения. Для этого
используйте опцию SHOWPLAN_ALL:
T-SQL
SET SHOWPLAN_ALL ON
GO
SELECT * FROM Contact WHERE EmailAddress ='davida@fabrikam.com'
GO
SET SHOWPLAN_ALL OFF
26
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 29
План выполнения запроса на небольшом объеме данных
Теперь добавьте значительное количество строк в таблицу и повторно постройте план
выполнения. Прежде всего, создайте хранимую процедуру AddData, добавляющую
указанное количество записей в таблицу. Добавляемые строки идентичны за
исключением адреса электронной почты, который формируется на основании значения
счетчика (Counter) по шаблону [Counter]davida@fabrikam.com:
T-SQL
CREATE PROCEDURE AddData
@NumRows int
AS
DECLARE @counter int
SELECT @counter = 1
WHILE (@counter < @NumRows)
BEGIN
INSERT INTO [Contact]
([Title],[FirstName],[LastName],[EmailAddress],[Phone])
VALUES
('Mr','David','Alexander',CAST(@counter as
nvarchar)+'davida@fabrikam.com','555-1234-5555')
SELECT @counter = @counter + 1
END
Выполните хранимую процедуру для добавления 10000 строк в таблицу Contact:
T-SQL
EXEC AddData 10000
27
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Внимание: добавление 10000 строк в таблицу может занять некоторое время.
Выполните приведенный ниже запрос и сравните планы выполнения со случаем, когда
в таблице содержалось малое количество строк.
T-SQL
SET SHOWPLAN_ALL ON
GO
SELECT * FROM Contact WHERE EmailAddress ='davida@fabrikam.com'
GO
SET SHOWPLAN_ALL OFF
Рисунок 30
План выполнения запроса на значительном объеме данных
Внимание: обратите внимание, что во втором случае использован созданный индекс. В
плане выполнения об этом свидетельствует запись Index Seek.
С использованием SQL Server Management Studio вы можете также отобразить план
выполнения в графическом виде. Находясь в окне запроса, нажмите сочетание клавиш
Ctrl-L, чтобы отобразить ожидаемый план выполнения (Estimated Execution Plan).
28
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 31
Графическое представление плана выполнения
Упражнение 3: работа с SQL Azure из
приложения Windows Azure
В этом упражнении вы создадите простое приложение для Windows Azure, позволяющее
управлять данными в таблице Customer базы данных AdventureWorksLT2008.
Цель данного упражнения – продемонстрировать, насколько просто работать с SQL Azure и
Windows Azure – это можно сделать, используя только имеющиеся в Visual Studio графические
инструменты и функциональность перетаскивания объектов.
Задача 1 – создание тестовой базы данных в SQL Azure
Подключитесь к расположенной в SQL Azure базе данных HoLTestDB, используя
созданную ранее учетную запись HoLUser. Вы можете использовать как SQL Server
Management Studio, так и веб-приложение Database Manager for SQL Azure.
Если вы используете SQL Server Management Studio, выберите пункт Open | File в меню
File, перейдите в подкаталог Source\Assets из каталога с материалами к лабораторной
работе. Если вы работаете с приложением Database Manager for SQL Azure, выберите
закладку Database в верхнем левом углу и нажмите кнопку Open Query на панели File.
Выберите файл AdventureWorks2008LT_Azure.sql и нажмите кнопку Open.
Внимание: данный скрипт содержит облегченную версию базы данных
AdventureWorksLT2008, доступную для скачивания с сайта Codeplex.com
29
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
(http://msftdbprodsamples.codeplex.com/). Там содержится эта и другие тестовые базы
для SQL Azure.
Выполните запрос; это может занять некоторое время.
Задача 2 – создание проекта в Visual Studio
В этой задаче вы создадите в Visual Studio новый проект – веб-приложение для Windows Azure.
Запустите Microsoft Visual Studio 2010 от имени администратора. Для этого в меню Start
| All Programs | Microsoft Visual Studio 2010 щелкните правой кнопкой мыши по ярлыку
Microsoft Visual Studio 2010 и выберите Run as Administrator.
В случае появления диалога User Account Control нажмите кнопку Continue.
В меню File выберите пункты New, затем Project.
В диалоге New Project разверните соответствующий предпочитаемому языку узел
(Visual C# или Visual Basic) и выберите вариант Cloud на панели Installed Templates.
В списке шаблонов укажите Windows Azure Project. Установите имя для создаваемого
проекта - “AdventureWorks” и местоположение - каталог Source\Ex3BuildingSQLAzureApp в каталоге с материалами к лабораторной работе. Убедитесь в
том, что установлен флажок Create directory for solution и установите имя решения в
“Begin”. Нажмите кнопку OK для создания проекта.
Рисунок 32
30
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Создание нового проекта для Windows Azure (C#)
Рисунок 33
Создание нового проекта для Windows Azure (Visual Basic)
В диалоге New Windows Azure Project на панели Roles раскройте закладку,
соответствующую предпочитаемому вами языку (Visual C# или Visual Basic), выберите
из списка тип роли ASP.NET Web Role и нажмите кнопку с указывающей вправо
стрелкой (>), чтобы добавить экземпляр роли данного типа в решение. Перед тем, как
закрыть данный диалог, выберите добавленную роль в правой панели, нажмите на
пиктограмме с изображением карандаша и переименуйте роль в AdventureWorksWeb.
Нажмите кнопку OK для создания решения.
31
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 34
Добавление ролей в проект для Windows Azure (C#)
Рисунок 35
Добавление ролей в проект для Windows Azure (VB)
32
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
После завершения создания шаблона проекта должно отобразиться содержимое
страницы Default.aspx. Если этого не произошло, откройте указанный файл.
Перейдите в режим Design View, для чего нажмите кнопку Design.
Перетащите элемент управления GridView из раздела Data панели инструментов
Toolbox на страницу.
Рисунок 36
Добавление элемента управления GridView
Используя SmartTag (кнопка со стрелкой в верхнем правом углу) добавленного
элемента управления GridView, выберите в раскрывающемся списке Choose Data
Source пункт New data source.
Рисунок 37
Создание нового источника данных
33
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
В мастере Data Source Configuration Wizard выберите источник данных Database. Не
меняйте предлагаемый идентификатор и нажмите кнопку OK.
Рисунок 38
Выбор источника данных
На диалоге Configure Data Source нажмите кнопку New Connection.
34
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 39
Создание нового подключения
Если отобразится диалог Choose data source, выберите Microsoft SQL Server и нажмите
кнопку Continue.
Теперь сконфигурируйте подключение к базе данных SQL Azure. Убедитесь, что в
диалоге Add Connection указан провайдер Microsoft SQL Server (SqlClient). Если
потребуется изменить, выберите Microsoft SQL Server в списке Data Source и .NET
Framework Data Provider for SQL Server в раскрывающемся списке Data Provider.
Установите значение поля Server name равным имени вашего сервера SQL Azure.
Измените тип аутентификации на Use SQL Server Authentication и укажите реквизиты
для подключения к SQL Azure. В списке доступных баз данных выберите HoLTestDB.
35
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 40
Настройка подключения к SQL Azure и базе данных HolTestDB
Нажмите кнопку Test Connection. Если все указано верно, вы увидите диалог,
информирующий об успешном подключении. Нажмите кнопку OK.
Рисунок 41
36
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Уведомление об успешном подключении
Нажмите кнопку OK, чтобы закрыть диалог Add Connection.
Нажмите кнопку Next для перехода к следующему шагу мастера Data Source
Configuration Wizard.
Убедитесь в том, что установлен флажок Yes, save this connection as, установите имя
строки подключения в AdventureWorksLTConnectionString и нажмите кнопку Next.
Рисунок 42
Сохранение строки подключения в конфигурационном файле приложения
Установите переключатель в значение Specify a custom SQL statement or stored
procedure и нажмите кнопку Next.
37
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 43
Использование SQL выражения для выполнения запросов данных
Внимание: использование опции Specify columns from a table or view невозможно, так
как в AdventureWorks используется именованная схема SalesLT – на нее необходимо
ссылаться явно.
Вставьте приведенный ниже запрос в поле SQL Statement и нажмите кнопку Next.
T-SQL
SELECT [FirstName], [LastName], [CompanyName], [EmailAddress] FROM
[SalesLT].[Customer]
38
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 44
Ввод собственного SQL запроса
Нажмите кнопку Test Query. Вы должны увидеть результат запроса.
39
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 45
Проверка запроса к базе данных
Нажмите кнопку Finish.
Нажмите кнопку F5 для локального запуска приложения.
После запуска приложения в браузере вы увидите список заказчиков:
40
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 46
Веб-приложение, отображающее список заказчиков из базы данных
Закройте окно браузера.
Упражнение 4: работа с
использованием различных
механизмов доступа
В этом упражнении вы получите навыки выполнения простых операций при работе с базами
данных SQL Azure с использованием ADO.NET, ODBC, OLEDB и технологии LINQ to SQL. Кроме того,
вы увидите, как организовать доступ к находящимся в SQL Azure данным из кода на Java и PHP.
41
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
При работе с технологиями от Microsoft вы увидите, что взаимодействие с базой данных SQL Azure
не отличается от работы с привычным SQL Server. Основное отличие заключается в формате
строки подключения, используемой для создания соединения с SQL Azure. После установления
соединения запросы можно выполнять с помощью любого класса, наследующего от DbCommand.
Задача 1 –открытие заготовки решения и изучение общей функциональности
Используя различные подходы, вы подключитесь к базе данных SQL Azure и выполните некоторые
операции над данными. Чтобы не тратить время на реализацию простейших операций, вы
возьмете за основу проект, в котором уже содержится эта функциональность – это позволит
сосредоточиться на более сложных вопросах и подчеркнет отличия предлагаемых для
рассмотрения технологий.
В этой задаче вы откроете решение ConnectDemoApp и изучите описание класса
SQLAzureConnectionDemo. Затем вы создадите потомков данного класса – по одной реализации
для каждой демонстрируемой технологии.
Запустите Microsoft Visual Studio 2010 из меню Start | All Programs | Microsoft Visual
Studio 2010 | Microsoft visual Studio 2010.
Откройте заготовку решения для данного упражнения. Для этого выберите пункт меню
File | Open Project. В диалоге Open Project перейдите в каталог Source\Ex4ConnectingViaClientLibraries\begin внутри каталога с материалами к работе. Выберите
соответствующий предпочитаемому языку каталог (C# или VB), затем откройте файл
решения ConnectDemoApp.sln, находящийся в папке ConnectDemoApp. Откроется
решение с приведенной ниже структурой.
Рисунок 47
Структура решения Connect Demo App (C#)
42
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 48
Структура решения Connect Demo App (Visual Basic)
Как было сказано ранее, вы создадите по одному классу для каждой рассматриваемой
технологии. Каждый класс будет наследовать от абстрактного класса
SQLAzureConnectionDemo, предоставляющего базовую функциональность работы с БД
SQL Azure. Внутри используется провайдер, реализуемый в дочернем классе.
Приведенная ниже таблица поясняет назначение всех методов данного класса:
Метод
Тип
Конструктор
43
Описание
Устанавливает подключение на основании
результата, возвращаемого абстрактным
классом CreateConnection.
CreateConnection
Abstract
Реализуется в дочернем классе. Создает
подключение в соответствии с выбранной
технологией.
CreateCommand
Abstract
Реализуется в дочернем классе. Создает
команду в соответствии с выбранной
технологией.
GetServerName
Возвращает имя сервера БД. Используется
для создания подключения к БД.
ConnectToSQLAzureDemo
Выполняет тестовый набор операций:
получает команду (CreateCommand), после
чего выполняет набор команд Execute* над
базой данных.
ExecuteCreateDemoTableStatement
Выполняет создание таблицы “DemoTable”.
ExecuteInsertTestDataStatement
Добавляет запись в таблицу “DemoTable”.
ExecuteReadInsertedTestData
Извлекает данные и вызывает метод
ReadData, чтобы вывести результаты в
консоль.
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
ReadData
Читает данные из таблицы и отображает в
консоли.
ExecuteDropDemoTable
Удаляет таблицу “DemoTable” из базы
данных.
Обратите внимание, что в дочерних классах необходимо и достаточно переопределить
только методы CreateConnection и CreateCommand.
Задача 2 – подключение к SQL Azure с использованием ADO.NET
В этой задаче вы создадите наследующий от SQLAzureConnectionDemo класс и реализуете
функциональность для работы с SQL Azure с использованием ADO.NET.
Добавьте в проект новый класс AdoConnectionDemo. Для этого щелкните правой
кнопкой на проекте ConnectDemoApp в панели Solution Explorer и выберите Add |
Class. В диалоге Add New Item выберите шаблон Class и измените имя на
AdoConnectionDemo.cs и AdoConnectionDemo.vb в зависимости от выбранного языка.
Добавьте в класс объявления пространств имен:
C#
using System.Data.Common;
using System.Data.SqlClient;
Visual Basic
Imports System.Data.Common
Imports System.Data.SqlClient
Обновите объявление класса, сделав его открытым и наследующим от
SQLAzureConnectionDemo. Результат представлен ниже:
Внимание: В Visual Basic новый класс всегда создается как Public.
C#
public class AdoConnectionDemo : SQLAzureConnectionDemo
{
}
Visual Basic
44
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Public Class AdoConnectionDemo
Inherits SQLAzureConnectionDemo
End Class
Добавьте конструктор, передающий реквизиты в конструктор базового класса:
(Code Snippet – Intro to SQL Azure – Ex4 ADO constructor – C#)
C#
public AdoConnectionDemo(string userName, string password, string dataSource,
string databaseName)
: base(userName, password, dataSource, databaseName)
{
}
(Code Snippet – Intro to SQL Azure – Ex4 ADO constructor – VB)
Visual Basic
Public Sub New(ByVal userName As String, ByVal password As String, ByVal
dataSource As String, ByVal databaseName As String)
MyBase.New(userName, password, dataSource, databaseName)
End Sub
Переопределите метод CreateConnection для создания объекта типа SqlConnection:
(Code Snippet – Intro to SQL Azure – Ex4 ADO CreateConnection – C#)
C#
protected override DbConnection CreateConnection(string userName, string
password, string dataSource, string databaseName)
{
return new SqlConnection(CreateAdoConnectionString(userName, password,
dataSource, databaseName));
}
(Code Snippet – Intro to SQL Azure – Ex4 ADO CreateConnection – VB)
Visual Basic
Protected Overrides Function CreateConnection(ByVal userName As String, ByVal
password As String, ByVal dataSource As String, ByVal databaseName As String)
As DbConnection
Return New SqlConnection(CreateAdoConnectionString(userName, password,
dataSource, databaseName))
End Function
45
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Реализуйте метод CreateAdoConnectionString, используемый методом
CreateConnection. Он конструирует строку подключения ADO.NET, для чего использует
возможности класса SqlConnectionStringBuilder.
(Code Snippet – Intro to SQL Azure – Ex4 ADO CreateAdoConnectionString method – C#)
C#
private string CreateAdoConnectionString(string userName, string password,
string dataSource, string databaseName)
{
// create a new instance of the SQLConnectionStringBuilder
SqlConnectionStringBuilder connectionStringBuilder = new
SqlConnectionStringBuilder
{
DataSource = dataSource,
InitialCatalog = databaseName,
Encrypt = true,
TrustServerCertificate = false,
UserID = userName,
Password = password,
};
return connectionStringBuilder.ToString();
}
(Code Snippet – Intro to SQL Azure – Ex4 ADO CreateAdoConnectionString method – VB)
Visual Basic
Private Function CreateAdoConnectionString(ByVal userName As String, ByVal
password As String, ByVal dataSource As String, ByVal databaseName As String)
As String
' create a new instance of the SQLConnectionStringBuilder
Dim connectionStringBuilder As SqlConnectionStringBuilder = New
SqlConnectionStringBuilder With {.DataSource = dataSource, .InitialCatalog =
databaseName, .Encrypt = True, .TrustServerCertificate = False, .UserID =
userName, .Password = password}
Return connectionStringBuilder.ToString()
End Function
Переопределите метод CreateCommand для создания команды ADO.NET. Этот
абстрактный метод вызывается из родительского класса.
(Code Snippet – Intro to SQL Azure – Ex4 ADO CreateCommand method – C#)
C#
46
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
protected override DbCommand CreateCommand(DbConnection connection)
{
return new SqlCommand() { Connection = connection as SqlConnection };
}
(Code Snippet – Intro to SQL Azure – Ex4 ADO CreateCommand method – VB)
Visual Basic
Protected Overrides Function CreateCommand(ByVal connection As DbConnection)
As DbCommand
Return New SqlCommand() With {.Connection = TryCast(connection,
SqlConnection)}
End Function
Это все, что необходимо сделать для поддержки ADO.NET. Теперь внесите некоторые
изменения в файл Program.cs или Module1.vb (в зависимости от выбранного языка) для
проверки добавленной функциональности.
Откройте файл Program.cs (для проекта на Visual C#) или Module1.vb (для проекта на
Visual Basic), дважды щелкнув на нем в панели Solution Explorer.
Добавьте в метод Main код, создающий экземпляр класса AdoConnectionDemo и
выполняющий тестовый пример.
(Code Snippet – Intro to SQL Azure – Ex4 ADO demo implementation – C#)
C#
static void Main(string[] args)
{
//Invoke the ADO.NET connection demo
Console.WriteLine("Starting the ADO.NET Connection Demo...");
AdoConnectionDemo demo1 = new AdoConnectionDemo(userName, password,
datasource, databaseName);
demo1.ConnectToSQLAzureDemo();
Console.WriteLine("Demo Complete... Press any key");
Console.ReadKey();
}
(Code Snippet – Intro to SQL Azure – Ex4 ADO demo implementation – VB)
Visual Basic
Sub Main()
' Invoke the ADO.NET connection demo
Console.WriteLine("Starting the ADO.NET Connection Demo...")
Dim demo1 = New AdoConnectionDemo(_userName, _password, _datasource,
_databaseName)
47
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
demo1.ConnectToSQLAzureDemo()
Console.WriteLine("Demo Complete... Press any key")
Console.ReadKey()
End Sub
Найдите над методом Main объявления переменных и обновите их значения в
соответствии с реквизитами учетной записи SQL Azure.
Рисунок 49
Настройка параметров подключения к SQL Azure (C#)
Рисунок 50
Настройка параметров подключения к SQL Azure (Visual Basic)
Нажмите F5 для запуска приложения. В консоли должен отобразиться результат
выполнения запросов.
Рисунок 51
48
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Результат выполнения с использованием технологии ADO.NET
Задача 3 – подключение к SQL Azure с использованием ODBC
В этой задаче вы создадите наследующий от SQLAzureConnectionDemo класс и реализуете
функциональность для работы с SQL Azure с использованием ODBC.
Добавьте в проект новый класс OdbcConnectionDemo. Для этого щелкните правой
кнопкой на проекте ConnectDemoApp в панели Solution Explorer и выберите Add |
Class. В диалоге Add New Item выберите шаблон Class и измените имя на
OdbcConnectionDemo.cs или OdbcConnectionDemo.vb в зависимости от выбранного
языка.
Добавьте в класс объявления пространств имен:
C#
using System.Data.Common;
using System.Data.Odbc;
Visual Basic
Imports System.Data.Common
Imports System.Data.Odbc
Обновите объявление класса, сделав его открытым и наследующим от
SQLAzureConnectionDemo. Результат представлен ниже:
Внимание: В Visual Basic новый класс всегда создается как Public.
C#
public class OdbcConnectionDemo : SQLAzureConnectionDemo
{
}
Visual Basic
Public Class OdbcConnectionDemo
Inherits SQLAzureConnectionDemo
End Class
Добавьте конструктор, передающий реквизиты в конструктор базового класса:
49
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
(Code Snippet – Intro to SQL Azure – Ex4 ODBC constructor – C#)
C#
public OdbcConnectionDemo(string userName, string password, string dataSource,
string databaseName):
base (userName, password, dataSource, databaseName)
{
}
(Code Snippet – Intro to SQL Azure – Ex4 ODBC constructor – VB)
Visual Basic
Public Sub New(ByVal userName As String, ByVal password As String, ByVal
dataSource As String, ByVal databaseName As String)
MyBase.New(userName, password, dataSource, databaseName)
End Sub
Переопределите метод CreateConnection для создания объекта типа SqlConnection:
(Code Snippet – Intro to SQL Azure – Ex4 ODBC CreateConnection – C#)
C#
protected override DbConnection CreateConnection(string userName, string
password, string dataSource, string databaseName)
{
return new OdbcConnection(CreateOdbcConnectionString(userName, password,
dataSource, databaseName));
}
(Code Snippet – Intro to SQL Azure – Ex4 ODBC CreateConnection – VB)
Visual Basic
Protected Overrides Function CreateConnection(ByVal userName As String, ByVal
password As String, ByVal dataSource As String, ByVal databaseName As String)
As DbConnection
Return New OdbcConnection(CreateOdbcConnectionString(userName, password,
dataSource, databaseName))
End Function
Реализуйте метод CreateOdbcConnectionString, используемый методом
CreateConnection. Этот метод создает строку подключения для ODBC-драйвера.
Предлагаемая реализация использует драйвер SQL Server Native Client 10.0. Вы можете
указать необходимость использования другого драйвера ODBC.
(Code Snippet – Intro to SQL Azure – Ex4 ODBC CreateOdbcConnectionString method – C#)
50
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
C#
private string CreateOdbcConnectionString(string userName, string password,
string dataSource, string databaseName)
{
string serverName = GetServerName(dataSource);
OdbcConnectionStringBuilder connectionStringBuilder = new
OdbcConnectionStringBuilder
{
Driver = "SQL Server Native Client 10.0",
};
connectionStringBuilder["Server"] = "tcp:" + dataSource;
connectionStringBuilder["Database"] = databaseName;
connectionStringBuilder["Uid"] = userName + "@" + serverName;
connectionStringBuilder["Pwd"] = password;
return connectionStringBuilder.ConnectionString;
}
(Code Snippet – Intro to SQL Azure – Ex4 ODBC CreateOdbcConnectionString method – VB)
Visual Basic
Private Function CreateOdbcConnectionString(ByVal userName As String, ByVal
password As String, ByVal dataSource As String, ByVal databaseName As String)
As String
Dim serverName As String = GetServerName(dataSource)
Dim connectionStringBuilder As OdbcConnectionStringBuilder = New
OdbcConnectionStringBuilder With {.Driver = "SQL Server Native Client 10.0"}
connectionStringBuilder("Server") = "tcp:" & dataSource
connectionStringBuilder("Database") = databaseName
connectionStringBuilder("Uid") = userName & "@" & serverName
connectionStringBuilder("Pwd") = password
Return connectionStringBuilder.ConnectionString
End Function
Переопределите метод CreateCommand для создания команды OdbcCommand. Этот
абстрактный метод вызывается из родительского класса.
(Code Snippet – Intro to SQL Azure – Ex4 ODBC CreateCommand method – C#)
C#
protected override DbCommand CreateCommand(DbConnection connection)
{
return new OdbcCommand() { Connection = connection as OdbcConnection };
}
51
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
(Code Snippet – Intro to SQL Azure – Ex4 ODBC CreateCommand method – VB)
Visual Basic
Protected Overrides Function CreateCommand(ByVal connection As DbConnection)
As DbCommand
Return New OdbcCommand() With {.Connection = TryCast(connection,
OdbcConnection)}
End Function
Это все, что необходимо сделать для работы с использованием ODBC. Теперь внесите
некоторые изменения в файл Program.cs или Module1.vb (в зависимости от выбранного
языка) для проверки добавленной функциональности.
Откройте файл Program.cs (для проекта на Visual C#) или Module1.vb (для проекта на
Visual Basic), дважды щелкнув на нем в панели Solution Explorer.
Добавьте в метод Main код, создающий экземпляр класса OdbcConnectionDemo и
выполняющий тестовый пример.
(Code Snippet – Intro to SQL Azure – Ex4 ODBC demo implementation – C#)
C#
static void Main(string[] args)
{
//...
//Invoke the ODBC connection demo
Console.WriteLine("Starting the ODBC Connection Demo...");
OdbcConnectionDemo demo2 = new OdbcConnectionDemo(userName, password,
datasource, databaseName);
demo2.ConnectToSQLAzureDemo();
Console.WriteLine("Demo Complete... Press any key");
Console.ReadKey();
}
(Code Snippet – Intro to SQL Azure – Ex4 ODBC demo implementation – VB)
Visual Basic
Sub Main()
' ...
' Invoke the ODBC connection demo
Console.WriteLine("Starting the ODBC Connection Demo...")
Dim demo2 = New OdbcConnectionDemo(_userName, _password, _datasource,
_databaseName)
demo2.ConnectToSQLAzureDemo()
Console.WriteLine("Demo Complete... Press any key")
52
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Console.ReadKey()
End Sub
Если вы не сделали этого ранее, найдите над методом Main объявления переменных и
обновите их значения в соответствии с реквизитами учетной записи SQL Azure.
Нажмите F5 для запуска приложения. В консоли должен отобразиться результат
выполнения запросов.
Рисунок 52
Результат выполнения с использованием ODBC
Задача 4 – подключение к SQL Azure с использованием OLEDB
В этой задаче вы создадите наследующий от SQLAzureConnectionDemo класс и реализуете
функциональность для работы с SQL Azure с использованием OLEDB.
Добавьте в проект новый класс OleDbConnectionDemo. Для этого щелкните правой
кнопкой на проекте ConnectDemoApp в панели Solution Explorer и выберите Add |
Class. В диалоге Add New Item выберите шаблон Class и измените имя на
OleDbConnectionDemo.cs или OleDbConnectionDemo.vb в зависимости от выбранного
языка.
Добавьте в класс объявления пространств имен:
C#
using System.Data.Common;
using System.Data.OleDb;
Visual Basic
53
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Imports System.Data.Common
Imports System.Data.OleDb
Обновите объявление класса, сделав его открытым и наследующим от
SQLAzureConnectionDemo. Результат представлен ниже:
Внимание: В Visual Basic новый класс всегда создается как Public.
C#
public class OleDbConnectionDemo : SQLAzureConnectionDemo
{
}
Visual Basic
Public Class OleDbConnectionDemo
Inherits SQLAzureConnectionDemo
End Class
Добавьте конструктор, передающий реквизиты в конструктор базового класса:
(Code Snippet – Intro to SQL Azure – Ex4 OLEDB constructor – C#)
C#
public OleDbConnectionDemo(string userName, string password, string
dataSource, string databaseName)
: base(userName, password, dataSource, databaseName)
{
}
(Code Snippet – Intro to SQL Azure – Ex4 OLEDB constructor – VB)
Visual Basic
Public Sub New(ByVal userName As String, ByVal password As String, ByVal
dataSource As String, ByVal databaseName As String)
MyBase.New(userName, password, dataSource, databaseName)
End Sub
Переопределите метод CreateConnection для создания объекта типа OleDbConnection:
(Code Snippet – Intro to SQL Azure – Ex4 OLEDB CreateConnection – C#)
54
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
C#
protected override DbConnection CreateConnection(string userName, string
password, string dataSource, string databaseName)
{
return new OleDbConnection(CreateOleDBConnectionString(userName, password,
dataSource, databaseName));
}
(Code Snippet – Intro to SQL Azure – Ex4 OLEDB CreateConnection – VB)
Visual Basic
Protected Overrides Function CreateConnection(ByVal userName As String, ByVal
password As String, ByVal dataSource As String, ByVal databaseName As String)
As DbConnection
Return New OleDbConnection(CreateOleDBConnectionString(userName, password,
dataSource, databaseName))
End Function
Реализуйте метод CreateOleDbConnectionString, используемый методом
CreateConnection. Этот метод создает строку подключения для OLEDB.
(Code Snippet – Intro to SQL Azure – Ex4 OLEDB CreateOleDbConnectionString method – C#)
C#
private string CreateOleDBConnectionString(string userName, string password,
string dataSource, string databaseName)
{
string serverName = GetServerName(dataSource);
OleDbConnectionStringBuilder connectionStringBuilder = new
OleDbConnectionStringBuilder
{
Provider = "SQLOLEDB",
DataSource = dataSource,
};
connectionStringBuilder["Initial Catalog"] = databaseName;
connectionStringBuilder["UId"] = userName + "@" + serverName;
connectionStringBuilder["Pwd"] = password;
return connectionStringBuilder.ConnectionString;
}
(Code Snippet – Intro to SQL Azure – Ex4 OLEDB CreateOleDbConnectionString method – VB)
Visual Basic
55
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Private Function CreateOleDBConnectionString(ByVal userName As String, ByVal
password As String, ByVal dataSource As String, ByVal databaseName As String)
As String
Dim serverName As String = GetServerName(dataSource)
Dim connectionStringBuilder As OleDbConnectionStringBuilder = New
OleDbConnectionStringBuilder With {.Provider = "SQLOLEDB", .DataSource =
dataSource}
connectionStringBuilder("Initial Catalog") = databaseName
connectionStringBuilder("UId") = userName & "@" & serverName
connectionStringBuilder("Pwd") = password
Return connectionStringBuilder.ConnectionString
End Function
Переопределите метод CreateCommand для создания команды OleDbCommand. Этот
абстрактный метод вызывается из родительского класса.
(Code Snippet – Intro to SQL Azure – Ex4 OLEDB CreateCommand method – C#)
C#
protected override DbCommand CreateCommand(DbConnection connection)
{
return new OleDbCommand() { Connection = connection as OleDbConnection };
}
(Code Snippet – Intro to SQL Azure – Ex4 OLEDB CreateCommand method – VB)
Visual Basic
Protected Overrides Function CreateCommand(ByVal connection As DbConnection)
As DbCommand
Return New OleDbCommand() With {.Connection = TryCast(connection,
OleDbConnection)}
End Function
Это все, что необходимо сделать для работы с использованием OLEDB. Теперь внесите
некоторые изменения в файл Program.cs или Module1.vb (в зависимости от выбранного
языка) для проверки добавленной функциональности.
Откройте файл Program.cs (для проекта на Visual C#) или Module1.vb (для проекта на
Visual Basic), дважды щелкнув на нем в панели Solution Explorer.
Добавьте в метод Main код, создающий экземпляр класса OleDbConnectionDemo и
выполняющий тестовый пример.
(Code Snippet – Intro to SQL Azure – Ex4 OLEDB demo implementation – C#)
56
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
C#
static void Main(string[] args)
{
//...
//Invoke the OleDB connection demo
Console.WriteLine("Starting the OLEDB Connection Demo…");
OleDbConnectionDemo demo3 = new OleDbConnectionDemo(userName, password,
datasource, databaseName);
demo3.ConnectToSQLAzureDemo();
Console.WriteLine("Demo Complete... Press any key");
Console.ReadKey();
}
(Code Snippet – Intro to SQL Azure – Ex4 OLEDB demo implementation – VB)
Visual Basic
Sub Main()
' ...
' Invoke the OleDB connection demo
Console.WriteLine("Starting the OLEDB Connection Demo...")
Dim demo3 = New OleDbConnectionDemo(_userName, _password, _datasource,
_databaseName)
demo3.ConnectToSQLAzureDemo()
Console.WriteLine("Demo Complete... Press any key")
Console.ReadKey()
End Sub
Если вы не сделали этого ранее, найдите над методом Main объявления переменных и
обновите их значения в соответствии с реквизитами учетной записи SQL Azure.
Нажмите F5 для запуска приложения. В консоли должен отобразиться результат
выполнения запросов.
57
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 53
Результат выполнения с использованием OLEDB
Задача 5 – подключение к SQL Azure с использованием Entity Framework
Вы подключились к базе данных SQL Azure с использованием трех технологий. Последнее, что вы
попробуете, будет использование Entity Framework. Реализация классов в данном случае не будет
наследовать от SQLAzureConnectionDemo, так как при использовании Entity Framework
отсутствует явное управление подключениями и командами; все эти объекты создаются неявно
для пользователя.
Откройте файл App.config и измените строку подключения таким образом, чтобы
ссылаться на базу данных SQL Azure с использованием реквизитов созданного ранее
пользователя.
Внимание: выполнение этого шага является обязательным, так как Entity Framework
извлекает информацию для создания подключения из конфигурационного файла.
Добавьте в проект новый элемент ADO.NET Entity Data Model с именем HoLModel. Для
этого щелкните правой кнопкой на узле проекта ConnectDemoApp в панели Solution
Explorer. Выберите пункт меню Add | New Item. В диалоге Add New Item выберите
шаблон ADO.NET Entity Data Model и измените имя на HoLModel.edmx.
58
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 54
Добавление модели EF
В мастере Entity Data Model Wizard выберите пункт Generate from database и нажмите
кнопку Next.
59
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 55
Выбор исходных данных для создания модели
На шаге Choose Your Data Connection выберите пункт Yes, include sensitive data in the
connection string и оставьте значения всех настроек по умолчанию.
60
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 56
Указание настроек модели
На шаге Choose Your Database Objects выберите все объекты и нажмите кнопку Finish .
61
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 57
Выбор объектов базы данных
После завершения создания модели она будет показана.
62
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 58
EF-модель создана
Добавьте в проект новый класс EFConnectionDemo. Для этого щелкните правой кнопкой
на проекте ConnectDemoApp в панели Solution Explorer и выберите Add | Class. В
диалоге Add New Item выберите шаблон Class и измените имя на EFConnectionDemo.cs
или EFConnectionDemo.vb в зависимости от выбранного языка.
Обновите объявление класса, сделав его открытым:
C#
public class EFConnectionDemo
{
}
Visual Basic
Public Class EFConnectionDemo
End Class
63
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Только для проекта на C#, добавьте объявления следующих пространств имен:
C#
using System;
using System.Linq;
Добавьте в класс EFConnectionDemo метод, извлекающий из базы данных названия
компаний и выводящий их на консоль. Воспользуетесь для этого возможностями
класса EF HolTestDBEntities.
(Code Snippet – Intro to SQL Azure – Ex4 EF ConnectToSQLAzure method – C#)
C#
/// <summary>
/// HolTestDBEntities takes care of handling your transactions for you
/// leaving you free use Linq to extract information stores up in the cloud
/// </summary>
public void ConnectToSQLAzureDemo()
{
HolTestDBEntities context = new HolTestDBEntities();
IQueryable<string> companyNames = from customer in context.Customers
where customer.CustomerID < 20
select customer.CompanyName;
foreach (var company in companyNames)
{
Console.WriteLine(company);
}
}
(Code Snippet – Intro to SQL Azure – Ex4 EF ConnectToSQLAzure method – VB)
Visual Basic
''' <summary>
''' HolTestDBEntities takes care of handling your transactions for you
''' leaving you free you use Linq to extraxt information stored up in the
cloud.
''' </summary>
Public Sub ConnectToSQLAzureDemo()
Dim context As New HolTestDBEntities()
' get all company names
Dim companyNames As IQueryable(Of String) = From customer In
context.Customers _
64
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Where customer.CustomerID < 20 _
Select customer.CompanyName
' display these all on the console
For Each company As String In companyNames
Console.WriteLine(company)
Next company
End Sub
Теперь внесите некоторые изменения в файл Program.cs или Module1.vb (в
зависимости от выбранного языка) для проверки добавленной функциональности.
(Code Snippet – Intro to SQL Azure – Ex4 EF demo implementation – C#)
C#
static void Main(string[] args)
{
//...
//Invoke the Entity Framework connection demo
Console.WriteLine("Starting the Entity Framework Connection Demo...");
EFConnectionDemo demo4 = new EFConnectionDemo();
demo4.ConnectToSQLAzureDemo();
Console.WriteLine("Demo Complete... Press any key");
Console.ReadKey();
}
(Code Snippet – Intro to SQL Azure – Ex4 EF demo implementation – VB)
Visual Basic
Sub Main()
' ...
' Invoke the Entity Framework connection demo
Console.WriteLine("Starting the Entity Framework Connection Demo...")
Dim demo4 = New EFConnectionDemo()
demo4.ConnectToSQLAzureDemo()
Console.WriteLine("Demo Complete... Press any key")
Console.ReadKey()
End Sub
Нажмите F5 для запуска приложения. В консоли должен отобразиться результат –
длинный перечень названий компаний, извлеченный из БД средствами Entity
Framework.
65
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Рисунок 59
Результат выполнения с использованием функциональности Entity Framework
Задача 6 – подключение к SQL Azure с использованием сторонних технологий
Подключение к базе данных SQL Azure с использованием сторонних технологий также просто.
Приведенный ниже фрагмент кода на PHP, как и один из примеров выше, использует драйвер SQL
Server Native Client ODBC.
PHP
<?php
$host = "server.database.windows.net";
$dbname = "database";
$dbuser = "user@server";
$dbpwd = "password";
$driver = "{SQL Server Native Client 10.0}";
// Build connection string
$dsn="Driver=$driver;Server=$host;Database=$dbname;Encrypt=true;TrustServerCertificat
e=true";
if (!($conn = @odbc_connect($dsn, $dbuser, $dbpwd))) {
die("Connection error: " . odbc_errormsg());
}
// Got a connection, do what you will
// Free the connection
@odbc_close($conn);
?>
Ниже приведен пример подключения к SQL Azure с использованием JDBC.
66
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
JAVA
// Build a connection string
String connectionUrl= "jdbc:sqlserver://server.database.windows.net;" +
"database=mydatabase;encrypt=true;user=user@server;password=*****";
// Next, make the sure the SQL Server Driver is loaded.
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// Then attempt to get a connection.
connection.
This will null or throw if we can't get a
Connection sqlConn = DriverManager.getConnection(connectionUrl);
if (sqlConn == null)
{
System.out.println("Unable to obtain connection. exiting");
System.exit(1);
}
// Got a connection, do what you will
// Free the connection
sqlConn.close();
Результат
В этой работы вы познакомились с базовыми принципами работы с SQL Azure. Если у вас ранее
был опыт работы с СУБД MS SQL Server, выполнение ряда задач должно было показаться вам
знакомым. Важно, что использование SQL Azure позволяет применить навыки, полученные ранее
в ходе работы с SQL Server.
Вы научились создавать базы данных, учетные записи и пользователей базы данных. Вы увидели,
что по большей части работа с объектами SQL Azure не отличается от работы с SQL Server.
Кроме того, вы создали простое приложение для Windows Azure, умеющее взаимодействовать с
базой данных SQL Azure.
И, наконец, убедились, что создание подключений к базе данных SQL Azure с использованием
различных технологий доступа от Microsoft не отличается от создания подключений к
традиционным реляционным базам данных.
67
Microsoft Tech∙Ed Russia 2011. Лабораторная работа.
Основы разработки с SQL Azure.
Download