Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование приложений баз данных с использованием СУБД MS SQL Server. Учебное пособие
.pdf
зволяют тонко регулировать права доступа к данным и процедурам
их обработки. Вы можете предоставлять разрешения на целые таблицы и представления, а также к отдельным столбцам. Важно только помнить некоторые правила, которые проистекают из внутренней природы обработчика запросов языка TRANSACT-SQL. Например, устанавливая разрешения на таблицы и представления, вы
регулируете
права доступа пользователей к применению операторов UPDATE, DELETE, INSERT и SELECT, но должны помнить,
что возможность применения пользователем БД предложения
WHERE в операторах потребует предоставления ему таких разрешений, чтобы он мог выполнять операторы UPDATE и SELECT.
Другой пример относится к разрешениям на столбцы. Вы можете
регулировать применение пользователем операторов UPDATE,
SELECT и REFERENCES к конкретному столбцу, но
когда пользователь попытается добавить строку в таблицу, подчиняющуюся ограничению FOREIGN KEY, выяснится, что пользователь должен
обладать разрешениями для этого столбца для выполнения операторов SELECT или REFERENCES. Для предоставления разрешений
пользователям удобно воспользоваться оператором GRANT. Для
запрещения пользователю неких прав применяется оператор
DENY. С помощью оператора REVOKE можно удалить заданные
до этого разрешения или снять
запрет. Это бывает удобно, когда вы
переводите пользователей в новую группу и собираетесь делегировать разрешения и запрещения пользователям, устанавливая их для
группы.
60

7. ПРОГРАММНЫЙ ДОСТУП К ДАННЫМ SQL SERVER
7.1. Использование ODBC в MS Access для получения
связанных таблиц базы данных SQL Server
ODBC (Open DataBase Connectivity) – это разработанный в начале девяностых годов прошлого века компанией Microsoft стандарт доступа к реляционным базам данных. Его главное назначение
состоит в том, чтобы отправлять SQL-инструкции базе данных
и передавать клиентскому приложению результаты выполнения
этих инструкций. Одним из важнейших преимуществ ODBC является его широчайшее распространение. Большинство разработчиков реляционных СУБД
создают драйверы ODBC для доступа
к своим таблицам.
Рис. 19
61

Архитектура ODBC включает в себя приложение ODBC, менеджер драйверов ODBC, драйвер ODBC и источник данных
ODBC. Приложения ODBC выполняют вызовы функций, экспортируемых менеджером драйверов ODBC. Тот, в свою очередь, вызывает соответствующий драйвер ODBC, который разрабатывается
свой для каждой конкретной СУБД. В некоторых случаях драйвер
может переформатировать SQL-запросы, приводя их в соответствие
с синтаксисом конкретной СУБД.
Источник данных ODBC создается при помощи программы Data Source Administrator и представляет
собой именованный объект, содержащий информацию о реляционной базе данных и драйвере, используемом для подключения к базе
данных. Когда приложение хочет подключиться к базе данных, оно
передает менеджеру ODBC имя источника данных (Data Source
Name, DSN). Прочитав связанную с этим именем информацию, менеджер загружает указанный
в ней драйвер. Информация об источнике данных содержит также имя пользователя и пароль для подключения.
Информация об источниках данных хранится в системном реестре в одном из двух разделов. В разделе HKEY_CURRENT_USER
находятся источники данных, связанные с конкретными пользователями, в разделе HKEY_LOCAL_MACHINE – системные источники, доступные всем пользователям системы.
Рассмотрим
процесс создания нового источника данных для
доступа к базе данных BookLibrary, находящейся на SQL Server.
Сначала необходимо запустить программу ODBC Data Source
Administrator на панели управления (рис. 19), затем выбрать вкладку «Пользовательские DSN» и нажать на кнопку «Добавить». В ответ откроется окно (рис. 20), в котором будет выведен список всех
драйверов ODBC, установленный в системе.
В списке надо выбрать
драйвер для SQL Server, как показано
на рисунке, и нажать на кнопку «Готово». Содержимое следующего
окна (рис. 21) будет уже определяться выбранным драйвером.
В текстовое поле «Имя» необходимо ввести имя источника данных.
Это имя может быть любым. Его основное назначение состоит
в том, чтобы идентифицировать драйвер и СУБД, с которыми будет
работать клиентское
приложение.
62

Рис. 20
Рис. 21
Если, подключаясь к источнику ODBC, приложение не задаст
его имя, менеджер ODBC выведет диалоговое окно, позволяющее
пользователю самостоятельно выбрать один из существующих источников данных DSN. В поле «Описание» можно ввести описание
63

источника данных, но делать это необязательно. В последнее поле
нужно ввести или выбрать из раскрывающегося списка имя сервера
SQL Server. Если источник данных создается на том же компьютере, на котором установлен и SQL Server, в это поле можно ввести
имя «(local)».
После щелчка по кнопке «Далее» откроется окно, в котором
надо выбрать способ аутентификации,
который будет использоваться для подключения к серверу. Если будет выбрана проверка
подлинности учетной записи SQL Server, то необходимо указать
имя входа и пароль (рис. 22). В следующем окне, которое появится
после щелчка по кнопке «Далее», необходимо указать базу данных
на SQL Server по умолчанию. В нашем случае это база BookLibrary.
Затем нажать на кнопку «Далее» и
в последнем окне нажать на
кнопку «Готово».
После создания источника данных для доступа к базе данных
BookLibrary, им можно воспользоваться для создания связанных
таблиц в базе данных SQL Server.
Рис. 22
Чтобы присоединить таблицы базы данных SQL к базе данных
MS Access, необходимо, открыв соответствующую базу, на вкладке
«Внешние данные» указать вид внешних данных «База данных
ODBC» и в появившемся диалоговом окне выбрать переключатель
«Создать связанную таблицу для связи с источником данных» (рис. 23).
64

Рис. 23
Далее необходимо нажать на кнопку «ОК» в нижнем правом
углу, после чего появится диалоговое окно выбора источника данных ODBC для связи с базой данных SQL Server. Чтобы связаться
с базой данных BookLibrary, размещенной в SQL Server этого же
компьютера, на котором находится сам файл базы данных MS Access, нужно выбрать источник данных BookLib (рис. 24).
Рис. 24
65

Создание этого источника данных было описано выше. После
нажатия на кнопку «OK» система может запросить имя входа и пароль для подключения к серверу.
После установления соединения с SQL Server появится окно,
в котором необходимо выделить таблицы для связывания (рис. 25).
Имена таблиц имеют префикс – имя схемы базы данных, которой
они принадлежат. Префикс dbo означает, что
таблицы были созда-
ны пользователем dbo – владельцем базы данных.
Рис. 25
Рис. 26
66

После выбора таблиц происходит их связывание с базой MS
Access. Имена связанных таблиц при этом учитывают имя схемы
базы данных SQL Server, но их можно переименовать. Теперь
с этими таблицами можно будет работать также, как и с собственными таблицами MS Access (рис. 26).
7.2. Стандарт OLE DB
ODBC имеет один существенный недостаток. Он предназначен только для реляционных баз данных. В то же время данные
электронной почты, текстовых документов и веб-страниц не могут
храниться в формате реляционных СУБД.
Кроме того, доступ к драйверам ODBC осуществляется посредством API (Application Program Interface), что делает работу
программиста, непосредственно кодирующего вызовы ODBC к данным, чрезмерно
сложной.
Технология OLE DB, пришедшая на смену ODBC, основана не
на API, а на COM (Component Object Model). OLE DB предназначена для работы с любыми данными, а не только с реляционными.
Приложения, использующие OLE DB, делятся на провайдеров
OLE DB (OLE DB providers) и потребителей OLE DB (OLEDB
consumers). Потребители OLE DB – это просто приложения, рабо-
тающие с данными при помощи интерфейса OLE DB. За доступ
к источнику данных и интерпретацию его формата
данных или специфического интерфейса отвечает провайдер OLE DB. С потребителем он взаимодействует при помощи стандартного интерфейса,
выполняя все его запросы и предоставляя все необходимые данные.
Некоторые провайдеры OLE DB для доступа к наиболее распространенным источникам данных входят в состав MS Office или
MS SQL Server. Они перечислены в следующем списке:
Microsoft Jet 4.0 OLE DB Provider;
Microsoft Office 12.0 Access Database Engine OLE DB
Provider;
Microsoft OLE DB Provider for ODBC Drivers;
Microsoft OLE DB Provider for Oracle;
Microsoft OLE DB Provider for SQL Server.
Microsoft OLE DB Provider for ODBC Drivers (MSDASQL)
разработан для совместимости с существующими источниками
данных ODBC. В отличие от большинства других провайдеров OLE
DB, непосредственно взаимодействующих с источником данных,
MSDASQL использует для этой цели существующие драйверы
67

ODBC. Он преобразует вызовы OLE DB в эквивалентные им вызовы ODBC, а затем выполняет обратное преобразование возвращаемых данных. Это провайдер нужно применять для тех источников
данных, у которых имеется драйвер ODBC, но отсутствует провайдер OLE DB.
7.3. Использование объектной модели ADO (ActiveX Data
Objects)
7.3.1. Структура ADO
Библиотека объектов доступа к данным ActiveX Data Objects –
это интерфейс OLE DB, предоставляющий приложениям доступ
к источникам данных OLE DB. Компания Microsoft разработала
библиотеку ADO для упрощения выполнения самых стандартных
действий по работе с данными и включила в OLE DB в качестве
интегрированного компонента. На рис. 27 представлена иерархия
объектов и коллекций объектной модели ADO. При работе с серверными данными используются три oбъекта
: Connection, Command
и Recordset. Объекты Connection, Command и Recordset являются
ключевыми элементами модели ADO. Объект Connection позволяет
приложениям ADO установить связь с нужным источником
данных. После этого объект Connection можно употреблять для непосредственного исполнения команд SQL, а также он может использоваться объектами Command и Recordset. Для установления
соединения с источником данных следует применить метод Open.
Закрыть Connection поможет метод Close.
Объекты Command
используются для передачи
команд в источник данных.
Для источников данных
типа SQL Server это могут
быть динамические команды SQL или вызовы хранимых процедур. Свойство
Command Text содержит
саму команду, а метод
Execute ее запускает.
Рис. 27
68
Объекты Parameter
применяются совместно

с объектами Command. Объекты Parameter специфицируют индивидуальные атрибуты объекта Command.
Коллекция объектов Parameters, связанная с некоторым объектом Command, содержит все объекты этого типа, которые необходимы для заданного объекта Command.
Целью создания объекта Recordset была отправка запросов
в SQL Server и последующий возврат результатов обработки запроса клиентскому приложению. Свойство Source объекта Recordset
содержит сам запрос или команду SQL. Обычно для
исполнения на
сервере команды SQL применяют метод Open объекта Recordset,
а затем с помощью запроса наполняют набор данных в клиентском
приложении.
Каждый объект Field, используемый вместе с объектом
Recordset, представляет определенный столбец, входящий в состав
набора записей. Свойства объекта Field отражают тип данных
столбца, его размер и значение. Коллекция объектов Fields, автоматически формируемая при выполнении метода
Open, содержит все
объекты Field для каждого объекта Recordset.
Как следует из его названия, объект Error предоставляет пользователям информацию об ошибках, генерируемую средствами
ADO в ходе исполнения программ. Несмотря на то что методы объектов Connection, Command и Recordset могут генерировать сообщения ADO о возникших ошибках, коллекция Errors объекта
Connection всегда содержит запись информации об ошибке. Свойство Description
объекта Error содержит текстовое описание ошибки, а свойство SQL State возвращает код ошибки в нотации ODBC
или OLE DB, что является гораздо более подробной информацией
о ситуации возникновения ошибки.
Общая схема работы с ADO в VBA следующая.
Включить в проект VisualBasic ссылку на библиотеку объ-
ектов MicrosoftActiveXDataObjects какой-либо версии выше 2.0.
Создать подключение к источнику данных с помощью
объ-
екта Connection.
Выполнить необходимые операции с данными при помощи
объекта Command или Recordset.
Закрыть подключение к источнику данных с помощью того
же объекта Connection.
69
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
