Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование приложений баз данных с использованием СУБД MS SQL Server. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
зволяют тонко регулировать права доступа к данным и процедурам их обработки. Вы можете предоставлять разрешения на целые таб­лицы и представления, а также к отдельным столбцам. Важно толь­ко помнить некоторые правила, которые проистекают из внутрен­ней природы обработчика запросов языка 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 Ac­cess, нужно выбрать источник данных 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]