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

Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009

.pdf
Скачиваний:
4972
Добавлен:
14.05.2016
Размер:
14.64 Mб
Скачать

13. Microsoft SQL Server 2000

513

можно увидеть в папке Roles произвольной базы. Следует обратить внимание на то, что каждая база данных уже имеет фиксированные роли (fixed database role).

Фиксированные роли базы данных предоставляют пользователям определенные наборы прав, которые нельзя организовать никаким другим способом. Количество и назначение этих ролей стандартно и не может быть изменено. Перечислим фиксированные роли базы данных:

db_securityadmin (члены этой роли могут управлять правами доступа к объектам БД других пользователей и членствам их в ролях);

db_owner (члены этой роли имеют права владельца, разрешающие любые действия);

db_ddladmin (члены данной роли могут создавать, изменять и удалять объекты БД);

db_accessadmin (члены этой роли могут создавать, удалять или изменять пользователей БД);

db_backupoperator (членам этой роли можно выполнять резервное копирование БД);

db_datawriter (члены этой роли могут изменять данные в любой таблице или представлении БД);

db_datareader (членам этой роли разрешено читать данные из любой таблицы или представления БД);

db_denydatawriter (членам этой роли запрещается изменять данные независимо от предоставленных им разрешений);

db_denydatareader (членам этой роли запрещается просматривать данные независимо от предоставленных им разрешений).

Право доступа (permission) представляет собой разрешение на получение доступа к определенному объекту базы данных, например, таблице или представлению. Права доступа предоставляются некоторой записи пользователя или роли, разрешая им выполнять определенные операции с объектом базы данных. Для каждого типа объекта базы данных имеется несколько видов прав доступа.

Все права доступа автоматически предоставляются владельцу или создателю объекта базы данных. В дальнейшем владелец может предоставить права доступа другим пользователям или группам.

Наибольшими правами доступа обладают следующие категории пользователей:

• системный администратор (sa) имеет все права доступа ко всем объектам во всех базах данных сервера. Учетная запись sa оставлена в SQL Server 2000 для сохранения обратной совместимости с предыдущими версиями;

• члены группы администраторов домена, в котором установлен локаль-

17 Зак. 541

514

Часть 3. Современные

СУБД и их

применение

ный SQL Server 2000. Учетная запись этой группы имеет имя BUILTIN\Administrators. По умолчанию она включается в фиксированную роль сервера, что означает предоставление по умолчанию администраторам сети прав управления сервером;

• владелец базы данных (Database Owner) имеет все права доступа ко всем объектам его базы данных.

Право доступа к объекту (object permission) представляет собой разрешение на выполнение конкретных действий над объектами базы данных, например, таблицами, представлениями и хранимыми процедурами. В частности, для таблиц существуют следующие типы прав доступа: SELECT — разрешение выборки данных; INSERT — разрешение вставлять данные; UPDATE — разрешение изменять данные и т. д.

Задание и отмену прав доступа к объектам базы данных можно выполнить с помощью команды GRANT и REVOKE языка Transact SQL и с помощью программы SQL Server Enterprise Manager.

Изменение прав доступа к объектам базы данных с помощью программы SQL Server Enterprise Manager включает следующие действия:

1.Запуск программы и выделение в окне программы требуемой базы данных, для которой выполняется изменение прав доступа к объектам.

2.Выполнение команды Action | Properties (Действия | Свойства). В результате откроется окно свойств базы данных.

3.На вкладке Permission (Разрешения) выбор требуемого пользователя или роли и установление требуемых прав доступа к объектам с помощью флажков, нажатие ОК.

13.9.Организация взаимодействия клиент-сервер

Напомним, что при использовании технологии клиент-сервер приложение разделяется на две (или более) части. Клиентская часть (Front-end) обеспечивает удобный графический интерфейс и размещается на компьютере пользователя. Серверная часть (Back-end) осуществляет управление данными, разделение информации, администрирование и обеспечивает безопасность информации. Клиентское приложение формирует запросы к серверу базы данных, на котором выполняются соответствующие команды. Результаты выполнения запроса пересылаются клиенту.

При разработке распределенных информационных систем в организации взаимодействия клиентской и серверной части можно выделить следующие важные в практическом смысле задачи:

13. Microsoft SQL Server 2000

515

перенос персональной базы данных на сервер для последующего ее коллективного использования как корпоративной базы данных;

организация запросов к корпоративной базе данных, размещенной на сервере, со стороны компьютера-клиента;

разработка клиентского приложения для удаленного доступа к корпоративной базе данных со стороны компьютера-клиента;

администрирование сервера со стороны клиента.

Рассмотрим названные задачи более подробно.

Перенос персональной базы данных на сервер

Задача переноса персональной базы данных на сервер может возникать в ситуациях, когда требуется обеспечить коллективный доступ к базе данных, разработанной с помощью персональной СУБД, такой как Microsoft Acces или Microsoft Visual FoxPro. Для решения этой задачи в составе названных персональных СУБД имеются соответствующие средства. Так, в Microsoft Acces 2002 имеется Upsizing Wizard (Мастер «наращивания»), предназначенный для преобразования базы данных Access к формату SQL Server. В составе пакета Microsoft Visual FoxPro 8.0 имеется аналогичный Мастер, предназначенный для преобразования базы данных Visual FoxPro к формату SQL Server или Oracle.

Способы

взаимодействия

при подготовке

запросов к базе данных

Подготовка запросов к базе данных на сервере (на языке SQL) со стороны клиентской части может выполняться с помощью некоторой утилиты, например, Query Analyzer. Для предоставления пользователю больших возможностей и удобства в подготовке и выполнении запросов создаются клиентские приложения.

Для организации запросов к серверной базе данных непосредственно на языке SQL или с помощью клиентского приложения возможны различные способы взаимодействия, заметно влияющие на его эффективность. К числу основных способов такого взаимодействия можно отнести следующие способы, основанные на использовании:

интерфейса DB-Library или DB-LIB (библиотек баз данных);

технологии ODBC (совместимости открытых баз данных);

интерфейса OLE DB (связывания и встраивания объектов баз данных);

технологии DAO (Data Acces Object — объектов доступа к данным);

технологии ADO (ActiveX Data Object — объектов данных ActiveX).

Названные интерфейсы и технологии могут применяться совместно, например, ODBC и DAO или ODBC, ADO и OLE DB. Охарактеризуем подробнее названные подходы к организации взаимодействия клиентской и серверной частей баз данных.

516

Часть 3. Современные СУБД и их применение

Интерфейс DB-Library

представляет собой специализированную библио-

теку функций API, осуществляющих прямой доступ к SQL Server из среды систем программирования С и Visual Basic. Они предоставляют средства отправки запросов и получения информации от SQL Server.

Работа с библиотекой DB-LIB предполагает следующую стандартную последовательность действий: регистрацию в системе (установление соединения), выполнение нескольких действия на сервере и отключение сервера (закрытие соединения).

DB-LIB представляет собой специально предназначенный для SQL Server интерфейс прикладных программ. Поэтому он является наименее мобильным из числа рассматриваемых в смысле возможностей переноса приложений в другую серверную среду. С точки зрения производительности этот способ позволяет осуществить самый быстрый доступ к информации. Причиной этого является то, что он предоставляет оптимизированный интерфейс прикладного программирования и непосредственно использует язык запросов системы SQL Server.

DB-LIB представляет интерфейс SQL Server уровня прикладного программирования. Отметим, что этот уровень не используется непосредственно в среде персональных СУБД, таких как Access и Visual FoxPro. В них используются абстрактные промежуточные уровни ODBC или OLE DB, упрощающие доступ к базам данных.

Технология DB-LIB использована в большом числе разработанных ранее информационных систем. В настоящее время эта технология не поддерживается фирмой Microsoft и вместо нее рекомендуется использовать средства OLE DB.

Технология ODBC, как отмечалось ранее, разработана фирмой Microsoft для обеспечения возможности взаимосвязи между различными СУБД. Она предусматривает создание дополнительного уровня между приложением и используемой СУБД. Службы ODBC обеспечивают получение от приложения запросов на выборку информации, перевод их на язык ядра адресуемой базы данных для доступа к хранимой в ней информации.

Основное назначение ODBC состоит в абстрагировании приложения от особенностей ядра серверной базы данных, с которой оно осуществляет взаимодействие, поэтому серверная база данных становится как бы прозрачной для любого клиентского приложения.

Достоинством технологии ODBC является простота разработки приложений, обусловленная высоким уровнем абстрактности интерфейса доступа к данным практически любых существующих типов СУБД (см. подр. 4.4). При этом возможно создание источника данных, связанного с любым типом базы данных. Используя эту технологию, можно создавать клиент-серверные приложения, причем средствами персональных СУБД целесообразно разрабатывать клиентскую часть приложения, а средствами SQL Server — серверную часть.

13. Microsoft SQL Server 2000

517

Основной недостаток технологии ODBC связан с необходимостью трансляции запросов, что снижает скорость доступа к данным. В системах клиентсервер этот недостаток устраняется путем перемещения обработки запроса с компьютера-клиента на компьютер-сервер. При этом устраняются промежуточные звенья, являющиеся основной причиной снижения скорости обработки информации с использованием средств рассматриваемой технологии.

OLE DB представляет собой интерфейс прикладного программирования API, который позволяет приложениям COM (Component Object Model — объектная модель компонентов) потреблять данные из источника данных OLE DB. Источник данных OLE DB включает данные, хранимые в различных форматах, не только в формате баз данных SQL. Приложение использует провайдер OLE DB для доступа к источнику данных OLE DB. Провайдер OLE DB представляет собой компонент СОМ, позволяющий принимать вызовы OLE DB API и выполнять все необходимое для обработки запроса к источнику данных.

В ранних версиях SQL Server приложения OLE DB должны были использовать провайдер OLE DB для ODBC, основанного на драйвере Microsoft SQL Server ODBC. Поскольку приложения по-прежнему могут использовать провайдер OLE DB для ODBC, поэтому более эффективно использование только провайдера OLE DB для SQL Server.

Интерфейс прикладного программирования OLE DB рекомендуется использовать для создания средств и утилит, или разработок системного уровня, нуждающихся в высокой производительности или доступе к свойствам SQL Server, недоступным с помощью технологии ADO. Основные возможности спецификации OLE DB обеспечивают полную функциональность доступа к данным, требуемую большинством приложений. Кроме того, OLE DB позволяет индивидуальным провайдерам определять специфические механизмы поддержки дополнительных свойств процессора данных, доступного провайдеру. Приложения ADO могут не иметь доступа к некоторым свойствам SQL Server, проявляемым через специфические свойства провайдера OLE DB для SQL Server. Поэтому приложения, желающие воспользоваться такими специфическими свойствами, должны использовать OLE DB API.

В SQL Server 2000 процессор баз данных сервера использует OLE DB для связи: между внутренними компонентами, такими как процессор хранения и процессор отношений; между установками SQL Server при использовании удаленных хранимых процедур; как интерфейс к другим источникам данных для распределенных запросов.

Технология DAO означает использование объектов, методов и свойств, которые существенно упрощают работу приложения с базой данных. Для обмена информацией с SQL Server применяются уровни доступа процессора баз данных Jet SQL Server и ODBC. Кроме того, при этом создается еще один уровень абстракции между приложением и функциями ODBC, используемыми при выполнении запросов.

518 Часть 3. Современные СУБД и их применение

При использовании технологии DAO работа с базами данных, таблицами, представлениями и т. д. ведется с использованием коллекций объектов. При этом обеспечиваются большие удобства в работе с объектами баз данных. К примеру, для создания представления проще вызвать метод Add соответствующего представлению объекта, чем применять стандартные средства ODBC с указанием имен используемых для этих целей хранимых процедур.

При работе с базами данных технология DAO применима для большинства источников данных, поддерживаемых средствами ODBC. Его можно применять также на других платформах и в системах программирования. В частности, технология DAO поддерживается версиями Visual Basic.

В настоящее время технология DAO постепенно вытесняется технологией ADO, которая позволяет разрабатывать приложения Web для работы с базами данных.

Технология ADO основана на объектной модели, в которой объекты имеют наборы коллекций, методов и свойств, обеспечивающие поддержку баз данных. Объекты этой технологии предоставляют наиболее широкие возможности по интеграции приложений с базами данных. С использованием технологии ADO приложения для работы с базами данных можно создавать в различных системах программирования, например, Visual Basic и Visual Basic for Application. Кроме того, объекты можно использовать при разработке Webприложений для среды ASP (Active Server Pages — активных серверных страниц), или приложений ASP.

Объекты ADO доступны в среде ASP и функционируют на уровне OLE DB. При этом технология ADO обеспечивает установление соединений ODBC и работу с уровнем OLE DB. При организации доступа к базе данных из приложения ASP инициатором установки соединения с сервером базы данных является клиентское приложение. Причем, приложения ASP выполняются в среде Internet Information Server, а не на SQL Server.

В целом технологию ADO можно охарактеризовать как наиболее современную технологию разработки приложений для работы с распределенными

базами по технологии клиент-сервер.

 

Администрирование

сервера

со стороны

клиента

Для администрирования сервера со стороны клиента могут использоваться компоненты клиентской части MS SQL Server 2000, например, программа SQL Server Enterprise Manager. Кроме того, для этих целей может использоваться так называемая технология SQL-DMO.

Технология SQL-DMO (SQL Distributed Management Objects — объекты распределенного управления SQL) позволяет приложениям, написанным на языках программирования, поддерживающих OLE или СОМ, выполнять администрирование всеми компонентами SQL Server. SQL-DMO представля-

13. Microsoft SQL Server 2000

519

ет собой интерфейс прикладного программирования API, используемый SQL Server Enterprise Manager. Поэтому приложения, используя SQL-DMO, могут выполнять все функции, выполняемые программой SQL Server Enterprise Manager.

При использовании технологии SQL-DMO работа ведется с объектами, коллекциями, свойствами и методами объекта SQL-DMO. Кроме того, возможно выполнение и посылка на сервер команд SQL Server с помощью вызова методов Executelmmediate и ExecuteWithResults.

13.10. Обработка данных с помощью ODBC

Рассмотрим организацию обработки в базе данных на сервере SQL Server с помощью технологии ODBC и использовании Access в качестве клиентского приложения. При использовании в качестве клиентского приложения других персональных СУБД, например, Visual FoxPro общая технология организации обработки данных сохраняется.

При использовании в клиентском приложении средств ODBC осуществляется обращение к определенному источнику данных, а через него — к СУБД, которую он представляет. При установке средств ODBC устанавливается общая подсистема ODBC и определяются пары «драйвер — база данных», которым задаются имена, используемые при установке соединения с базой данных. Соответствующие пары называются DSN (Data Sourse Names — имена источников данных, или поименованные источники данных).

Каждый источник данных описывает собственно источник данных и информацию о доступе к этим данным. В качестве данных могут выступать базы данных Microsoft Access, Microsoft SQL Server, Oracle RDBMS, электронные таблицы, а также обычные текстовые файлы. Информация о доступе, например, к серверу БД, обычно включает в себя сведения о размещении сервера, имя БД, идентификатор учетной записи и пароль, а также различные параметры драйвера, описывающие как устанавливать соединение с источником данных.

При обработке данных на сервере с использованием технологии ODBC и применением клиентского приложения можно выделить следующие два основных этапа: задание источника данных — создание и настройка соединения, а также собственно обработка данных с помощью запросов.

Создание и настройка источника данных

Создание источника данных выполняется с помощью утилиты ODBC Data Source Administrator, вызываемой из окна панели управления (Control Panel). С ее помощью (рис. 13.4) можно создать новое соединение и настроить параметры имеющихся соединений.

520

Часть 3. Современные

СУБД

и их

применение

f 'lODBC D a t a S o u r c e A d m i n i s t r a t o r

 

 

J j x j

User DSN | System DSN | File DSN | Drivers | Tracing | Connection Pooling j About

User Data Sources:

 

 

 

 

Name

| Driver

j

Add...

 

dBASE Files

Microsoft dBase Driver (".dbf)

 

 

 

Excel Files

Microsoft Excel Driver (X.xls)

Remove

 

IMQIS

SQL Server

 

 

 

MS Access Database

Microsoft Access Driver (*.mdb)

Configure.

 

Visual FoxPro Database

Microsoft Visual FoxPro Driver

 

 

 

Visual FoxPro Tables

Microsoft Visual FoxPro Driver

 

 

 

An ODBC User data source stores information about how to connect to the indicated data provider. A User data source is only visible to you, and can only be used on the current machine.

OK

|

Cancel

Apply

Help

Рис. 13.4. Окно настройки параметров соединения

Для создания нового соединения нужно в окне утилиты ODBC Data Source Administrator (рис.13.4) нажатием кнопки Add... (Добавить...) вызвать Wizard (Мастер) создания источника данных ODBC и в его диалоговых окнах указать параметры. В их число входят: имя и описание источника данных; сервер, с которым устанавливается соединение; метод аутентификации; имя базы данных; имя базы данных по умолчанию и некоторые другие. Желательно указать имя используемой базы данных. Это гарантирует то, что при установке соединения будет выбрана именно эта база данных.

Для изменения параметров имеющегося соединения достаточно в окне утилиты ODBC Data Source Administrator (рис. 13.4) выбрать нужное соединение, нажатием кнопки Configure... (Настройка...) вызвать диалог настройки параметров соединения и внести нужные изменения.

Источники данных ODBC могут быть следующих трех видов (все поддерживаются СУБД MS Access):

• пользовательские (вкладка User DSN окна утилиты), специфичные для каждого пользователя компьютера-клиента. Их можно создавать с помощью утилиты ODBC Administrator и с помощью Access. Такие источ-

13. Microsoft SQL Server 2000

521

ники данных могут использоваться только тем пользователем некоторого компьютера, которым они создавались;

• системные (вкладка System DSN окна утилиты), — также можно создавать с помощью утилиты ODBC Administrator и с помощью Access. Та-

кие источники данных могут быть доступны многим пользователям (с

соответствующими привилегиями) некоторого компьютера, а также службам Windows NT/2k;

• файловые (вкладка File DSN окна утилиты) — являются текстовыми файлами, определяющими источник данных. Такие источники данных могут использоваться в режиме совместного доступа многими пользователями, имеющими аналогичные установленные драйверы.

Использование баз данных

После задания базы данных SQL Server в качестве источника данных (пользовательского, системного или файлового) можно выполнить подключение, импорт или экспорт таблиц базы данных SQL Server в базу данных Access. При этом учитываются права доступа, предоставляемые SQL Server пользователям. При использовании таблиц серверной базы данных не требуется указывать используемые индексы, так они считываются автоматически при открытии таблицы.

Подключение таблиц базы данных SQL Server, например dbs, включает следующую последовательность действий:

1.Запуск Access и создание базы данных с произвольным именем, например, dba.mdb.

2.С помощью команды меню Файл | Внешние данные | Связь (File | Get External Data | Link Tables) открытие диалогового окна Связь (Link).

3.В списке Тип файла (Files of Туре) выбор элемента Базы данных ODBC (ODBC Databases).

4.В очередном диалоговом окне Select Data Source (Выбор источника данных) на вкладке Machine Data Source (Машинный источник данных) выбор двойным щелчком источника данных в списке.

5.В очередном диалоговом окне SQL Server Login (Регистрация SQL Server) указание имени и пароля, нажатие ОК для регистрации в SQL Server. После подключения к базе данных dbs с помощью ODBC API открывается диалоговое окно Link Tables (Связь с таблицами), в кото-

ром приводится список имен таблиц с префиксами dbo (database owner — владелец базы данных).

6.Подключение при необходимости всех таблиц нажатием кнопки Select All (Выделить все), затем ОК.

7.Для обновления таблиц Access нужно иметь уникальный индекс. Если в таблице SQL Server нет индекса первичного ключа, то при попытке

522

Часть 3. Современные

СУБД и их

применение

обновления таблицы открывается диалоговое окно Select Unique Record Identifier (Выбор уникального индекса). В нем задаются поля первичного ключа, и нажимается ОК.

Подключенные таблицы выводятся в списке таблиц в окне базы данных. Значок глобуса слева от имени таблицы указывает на подключение с помощью ODBC. В именах таблиц вместо точек используется символ подчеркивания.

Создание запроса к базе данных SQL Server включает следующие шаги:

1.Создание нового запроса и добавление в него требуемых таблиц из базы данных SQL Server, например, dbs.mdb.

2.Перетаскивание требуемых полей из добавленных таблиц в строку Field (Поле) бланка запроса.

3.Нажатие на панели инструментов кнопки Run (Запуск) для вывода результатов выполнения запроса.

4.Закрытие и сохранение запроса.

Приведенная выше процедура подключения таблиц используется в большинстве случаев для баз данных SQL Server при наличии драйверов ODBC.

В SQL Server можно писать хранимые процедуры и выполнять их вместо посылки серверу отдельных команд. Выполнение запроса в виде хранимой процедуры осуществляется быстрее, чем с помощью ядра базы данных Jet. Это обусловлено уменьшением объема передаваемых данных и тем, что хранимые процедуры выполняются быстрее, поскольку предварительно компилируются. Кроме того, запрос SQL к серверу используется при необходимости использовать средства Transact-SQL, отсутствующие в SQL Access.

Для преобразования запроса Access в запрос SQL к серверу выполняется следующее:

1.Открытие ранее созданного запроса в режиме Конструктора запросов.

2.Выполнение команды Query | SQL-Specific | Pass-Through (Запрос | Запрос к серверу | К серверу). В результате открывается диалоговое окно, содержащее команду SQL.

3.Из каждого имени таблицы в тексте команды запроса SQL удаление префикса dbo_.

4.Сохранение запроса к серверу с помощью команды меню File | Save (Файл | Сохранить).

5.Нажатие на панели инструментов кнопки Run (Запуск) для выполнения запроса к серверу. В открывшемся диалоговом окне Select Data Source (Выбор источника данных) выбор нужного источника данных, нажатие ОК.

6.Задание в очередном окне имени и пароля, нажатие ОК. Результирующее множество запроса будет таким же, как и при выполнении стандартного запроса ядром SQL Server.