Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы SQL-Курс лекций ИНТУИТ.docx
Скачиваний:
180
Добавлен:
16.09.2019
Размер:
554.17 Кб
Скачать

Пример 17.1. Создание новой базы данных, нового пользователя для этой базы данных, с предоставлением ему всех прав.

Пример 17.2. Использование ролей.

Создадим роль stud и включим в эту роль двух пользователей user1 и user2:

sp_addrole 'stud'

sp_addrolemember 'stud','user1'

sp_addrolemember 'stud','user2'

Предоставим права роли stud и непосредственно пользователю user2:

GRANT SELECT, INSERT ON Товар TO stud

GRANT SELECT, INSERT ON Товар TO user2

После выполнения этих команд пользователи user1 и user2 могут выполнять команды выборки и добавления записи в таблицу Товар.

Приостановим право на выполнение вставки в таблицу Товар для роли stud:

REVOKE INSERT ON Товар TO stud

После выполнения предыдущей команды пользователь user1 теряет право вставки записи, а user2 сохраняет это право, поскольку право вставки предоставлено ему явно.

Выполним команду

DENY INSERT ON Товар TO stud.

После выполнения этой команды оба пользователя лишаются права вставки в таблицу Товар.

Лекция 18: Внедрение SQL-операторов в прикладные программы Описываются возможности использования языка SQL в прикладных программах. Определяется роль технологии ODBC как единого интерфейса для доступа к смешанным базам данных SQL. Рассматриваются архитектура ODBC и варианты доступа к базам данных с использованием технологии ADO и Java. Методы доступа иллюстрируются примерами.

Sql и прикладные программы

Язык SQL можно использовать как в интерактивном режиме, так и путем внедрения его операторов в программы, написанные на процедурных языках высокого уровня. Примером интерактивного использования SQL-операторов является окно Query Analyzer в среде MS SQL Server. Применение же языка SQL в прикладных программах на практике реализовано двумя различными способами:

  1. Внедренные SQL-операторы. Отдельные SQL-операторы внедряются прямо в исходный текст программы и смешиваются с операторами базового языка. Этот подход позволяет создавать программы, обращающиеся непосредственно к базе данных. Специальные программы-предкомпиляторы преобразуют исходный текст с целью замены SQL-операторов соответствующими вызовами подпрограмм СУБД, затем он компилируется и собирается обычным способом.

  2. Использование прикладного интерфейса программирования (API). Альтернативный вариант состоит в предоставлении программисту стандартного набора функций, к которым можно обращаться из создаваемых им программ. Конкретный вариант API может предоставлять тот же набор функциональных возможностей, который существует при подключении встроенных операторов, однако при этом устраняется необходимость предкомпилирования исходного текста. Кроме того, некоторые разработчики указывают, что в этом случае используется более понятный интерфейс и созданный программный текст более удобен с точки зрения его сопровождения.

Оба способа предполагают использование операторов как статического SQL, так и динамического SQL.

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

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

Рассмотрим применение прикладного интерфейса программирования (API) для выполнения операторов SQL.

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

Чтобы не разрабатывать отдельные версии пользовательского приложения для каждой из целевых СУБД, с которыми данное приложение планируется использовать, Microsoft разработала стандарт, получивший название Open Database Connectivity ODBC. Технология ODBC предусматривает применение единого интерфейса для доступа к различным базам данных SQL, причем язык SQL рассматривается как основное стандартное средство доступа. Этот интерфейс обеспечивает высокую степень универсальности, в результате одно и то же приложение может получать доступ к данным, хранящимся в базах различных целевых СУБД, без необходимости внесения изменений в его программный текст. Таким образом, разработчики получили инструмент для создания и распространения приложений архитектуры "клиент-сервер", способных работать с широким спектром различных целевых СУБД, а связать приложения с любой выбранной целевой СУБД можно посредством соответствующего ODBC-драйвера.

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

  • приложения больше не связаны с прикладным API какой-то одной СУБД;

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

  • приложение способно игнорировать особенности используемых протоколов передачи данных;

  • данные посылаются и доставляются в том формате, который наиболее удобен для конкретного приложения;

  • средства поддержки ODBC разработаны с учетом требований стандартов X/Open и CLI (Call Level Interface);

  • в настоящее время существуют драйверы ODBC для различных типов самых распространенных СУБД.