Корпоративные базы данных - статьи

Microsoft SQL Server Web Assistant





В состав Microsoft SQL Server 6.5 входит SQL Web
Assistant (см.рис.2), с которого было бы целесообразно начать
наше рассмотрение, так как это довольно простая в использовании
утилита, не требующая знания HTML и серьезной практики работы
с SQL. Web Assistant имеет интерфейс мастера (wizard), т.е. состоит
из ряда последовательных форм с вопросами, отвечая на которые
администратор может сэкономить время по выполнению рутинного HTML-кодирования
и получить готовую (в HTML-кодах) страницу, содержащую результаты
опубликования произвольного запроса к базе. Полученная страница
не является активной в строгом смысле этого слова, так как публикуется


при помощи push-метода (cм.рис.4), т.е. обновление происходит
по инициативе сервера, и не допускает обновления со стороны клиента.
Однако сервер может производить обновление (перегенерацию) страницы
на триггерной основе или на основе расписаний задач под управлением
SQL Executive. Мастер работает только с базами данных MS SQL Server
и использует три хранимых процедуры sp_makewebtask, sp_runwebtask
и sp_dropwebtask. При необходимости они могут использоваться самостоятельно
в кодах T-SQL.

Рассмотрим следующий простой пример. Пусть мы имеем
некоторую базу данных MS SQL Server, содержащую таблицу rates
с курсами валют.

idkod
kurs
1Валюта 11000.00
2Валюта 22000.00
3Валюта 33000.00
4Валюта 44000.00
5Валюта 55000.00
6Валюта 66000.00
7Валюта 77000.00
8Валюта 88000.00
9Валюта 99000.00





Рис. 3

Мы хотим публиковать на Web оперативные данные об
изменении курсов, как только таковые будут иметь место. Для этого
мы определяем задачу публикации:

sp_makewebtask @outputfile
= 'c:\rates.htm', @query = 'select kod, kurs from rates', @procname=web_rates,@resultstitle
= 'Курсы валют', @URL = "http://www.microsoft.com",
@reftext = 'Microsoft Home Page', @whentype=9

Практически все значения параметров здесь интуитивно
понятны. В пояснении нуждается только последний @whentype, который

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

Далее мы можем определить триггер на все виды транзакций
в таблице rates:

if exists (select * from
sysobjects where id = object_id('dbo.tr') and sysstat & 0xf
= 8)

drop trigger dbo.tr

go

create trigger tr on dbo.rates
for insert,update,delete

as exec sp_runwebtask
@procname=rates

go



Рис.4

Теперь любое изменение в таблице rates вызовет обновление
страницы c:\rates.htm. В своей презентации на выставке UnixExpo'97
я немного усложнил задачу и посылал запрос на MS SQL Server по
электронной почте непосредственно в теле письма с темой SQL.

update rates set kurs=kurs+100
where id=1

На MS SQL Server в этот момент была запущена утилита
SQLMail, обеспечивающая взаимодействие с электронной почтой, и
хранимая процедура

sp_processmail @subject='SQL',
@dbuse='db_rates', @set_user='dbo',

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

2. dbWeb

Microsoft dbWeb представляет собой шлюз между 32-битными
ODBC-ресурсами, в качестве которых могут выступать, например,
Microsoft SQL Server, Microsoft Access, Microsoft Visual FoxPro,
Oracle и т.д., и MS IIS. dbWeb предусматривает создание схемы,
содержащей описание данных и связанных с ними Web-страниц. Он
поддерживает исполнение запросов в реальном режиме времени на
основе "pull"-модели публикации, позволяя тем самым
создавать активные Web-страницы.



Рис.5

Microsoft dbWeb структурно состоит из двух основных
компонент: dbWeb Service и dbWeb Administrator (cм.рис.5). dbWeb
Service является типичным ISAPI-приложением, которое обрабатывает


пользовательские запросы, направляемые посетителем страницы через
браузер, и управляет соединениями между браузером, ODBC-ресурсом
и IIS. К функциям dbWeb Administrator относится создание HTML-страниц,
содержащих результаты выполнения запросов на основе уже упоминавшихся
схем, с помощью которых осуществляется управление публикуемыми
данными. Схемы определяют сам запрос и структуру страниц. При
этом не требуется знания HTML или ISAPI, так как в состав dbWeb
Administrator входит интерактивный мастер-построитель схем (Schema
Wizard), который в традиционной для любой программы-мастера манере
позволяет задать поля поиска по методу Query-by-Example (QBE),
выбрать поля для отображения в таблице страницы результатов и
определить переходы из списка записей в отдельные страницы, содержащие
развернутую информацию по текущей записи. Настройкой соответствующих
свойств можно разрешать или запрещать операции вставки, удаления
и редактирования. Для проверки прав пользователя используется
система безопасности той СУБД, к которой происходит доступ. dbWeb
имеет в своем составе широкий спектр шаблонов страниц, которые
при необходимости могут быть легко откорректированы и настроены
разработчиком для более полного соответствия его задачам. Таким
образом, dbWeb не является конечным пользовательским приложением.
Скорее его можно охарактеризовать как достаточно легкий в использовании
инструментарий разработки, который, как всякий мастер, не поддерживает
языка программирования и оттого, на мой взгляд, несколько проигрывает
в функциональности рассмотренному нами ранее SQL Web Assistant,
несмотря на возможность инициируемого посетителем обновления информации
в базе. Тем не менее, эта программа успешно справляется с автоматизацией
большинства рутинных операций по организации соединений и публикации
данных из БД и покрывает, по разным оценкам, порядка 40-60% потребностей
бизнеса среднестатистической фирмы при организации доступа к своим
источникам данных через Internet.


dbWeb является свободно распространяемым
приложением и может быть установлен с Microsoft Technet, Windows
NT Resource Kit или непосредственно с .

3. Internet Database Connector (IDC)

IDC является другим примером достаточно давно и успешно
используемого ISAPI-приложения. Он входит в состав MS IIS. С помощью
вызовов функций ODBC API IDC обеспечивает прямую связь между полями
HTML-формы и соответствующим ODBC-достижимым источником данных,
например, базой данных MS SQL Server, без необходимости написания
замысловатых CGI-скриптов. Схема работы IDC показана на рис.6.

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



Рис.6

MS IIS распознает расширение .idc как вызов httpodbc.dll,
которая считывает http-заголовки из управляющего блока ISAPI для
определения параметров запроса. Httpodbc.dll читает и разбирает
idc-файл, указанный в URL. Имя источника, имя пользователя, пароль
и пр. используются для подключения к соответствующему ресурсу
ODBC, после чего httpodbc передает на выполнение SQL-запрос и
получает результаты. Результаты используются для наполнения заготовки
в виде htx-файла, после чего полученный HTML-документ MS IIS передает
браузеру. Описанная последовательность действий иллюстрируется
на рис.7

Продолжим развитие нашего простого примера из п.2
средствами IDC. Опубликуем таблицу rates с помощью файлов rates.idc
и rates.htx



Рис.7

Rates.idc:

Datasource: rates

Template: rates.htx

SQLStatement: select id,kod,kurs from rates

Username: sa

Rates.htx:

<!DOCTYPE HTML PUBLIC
"-//IETF//DTD HTML//EN">

<html>

<head>

<meta http-equiv="Content-Type"



content="text/html;
charset=windows-1251">

<meta name="GENERATOR"
content="Microsoft FrontPage 2.0">

<title></title>

</head>

<body>

<p><font size="5"><strong>Курсы
валют</strong></font></p>

<table border="1">

<tr>

<th><font
face="Times New Roman CYR">Код</font></th>

<th><font
face="Times New Roman CYR">Курс</font></th>

</tr>

<%begindetail%>
<tr>

<td><a

href="http://ntalexejs/aaa/rates_edit.idc?id1=<%id%>"><font

face="Times
New Roman CYR"><%kod%></font></a></td>

<td><font
face="Times New Roman CYR"><%kurs%></font></td>

</tr>

<%enddetail%></table>

</body>

</html>

Попутно заметим, что Microsoft FrontPage предоставляет
удобный редактор для построения заготовок и программу-мастер для
генерации idc-файлов. Результат показан на рис.8.



Рис. 8

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

Содержание раздела