ГЛАВА 8
Публикация данных и приложений
Службы узла Web для Windows NT позволяют публиковать как данные, так и приложения. Таким образом, узел Web может содержать все, что угодно, от статических страниц до интерактивных приложений. Кроме того, можно осуществлять поиск, выборку и запись информации в базы данных.
Этой главе объясняется как:
С помощью редактора документов HTML можно создавать гиперссылки на другие файлы. Для вставки в документ изображений и звукозаписей следует установить в системе соответствующее программное обеспечение.
После создания документа HTML или документа другого формата скопируйте файл в основной каталог Inetsrv\Wwwroot или назначьте каталог, содержащий публикуемый файл, основным каталогом.
Чтобы настроить отображение MIME, запустите редактор реестра (Regedt32.exe) и откройте
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters\MimeMap
Добавьте значение REG_SZ, используя следующий синтаксис:
<тип mime>,<расширение имени>,<неиспользуемый аргумент>,<тип Gopher>
Например:
text/html,htm,/unused,1
image/jpeg,jpeg,/unused,5
Оставьте пустой строку данных, связанную с новым значением. При отсутствии отображения MIME для заданного расширения, по умолчанию используется тип MIME для расширения в виде звездочки (*). Например, чтобы обработать запрос на файл Current.vgr (для расширения VGR отсутствует отображение MIME), сервер будет использовать тип MIME, указанный для звездочки (двоичные данные). Как правило, это приводит к сохранению файла на диске.
Оператор include имеет следующий формат:
<!--#include file="значение"-->
Аргумент значение содержит относительный или полный путь из основного каталога службы WWW.
Например, чтобы включить в каждый документ HTML ссылку на основную страницу:
<A HREF="/homepage.htm"><IMG SRC="/images/button_h.gif"></A>
Применение файлов STM может повлиять на производительность системы. Используйте это расширение только в случае необходимости.
Вы можете вернуться к <!--#include file="/linkhome.htm"--> в любой момент времени.
Все пути составляются относительно основного каталога WWW и могут включать виртуальные каталоги.
Приложения ISAPI компилируются в виде библиотек динамической компоновки (DLL) и загружаются для выполнения службой WWW. Поскольку такие коды находятся в памяти резидентно, программы ISAPI работают значительно быстрее приложений CGI.
Приложения ISAPI представляют собой библиотеки динамической компоновки (DLL), выполняемые на сервере Web. Приложения ISAPI работают быстрее сценариев CGI (Common Gateway Interface), поскольку находятся в памяти сервера резидентно и каждый новый запрос не приводит к запуску отдельного процесса.
Средства ISAPI позволяют выполнять предварительную обработку запросов и завершающую обработку ответов, реализуя конкретный для данного узла способ работы с запросами и ответами. Фильтры ISAPI применяются в пользовательских приложениях, осуществляющих проверку подлинности, доступ к ресурсам или ведение журнала.
С помощью фильтров ISAPI и приложений можно создать очень сложный узел. Расширения ISAPI используются в интерактивных системах совместно с приложением Internet Database Connector.
Программирование ISAPI подробно изложено в пакете Microsoft Win32 SDK (Software Development Kit), доступном через MSDN. Дополнительные сведения о получении ISAPI SDK см. в главе Перед началом работы этого руководства.
Службы узла Web могут использовать большинство 32-разрядных приложений, работающих в Windows NT и удовлетворяющих спецификациям CGI.
На следующем рисунке показано как средство просмотра, сервер и приложение CGI обмениваются данными в соответствии со спецификациями CGI. Остальная часть настоящего раздела раскрывает содержание пяти этапов, показанных на рисунке.
GET
POST
Клиент инициирует процесс CGI щелчком на странице HTML:
.pl: REG_SZ: C:\RESKIT\PERL\BIN\PERL.EXE %s %s
Здесь
2. После директив сервера должна следовать пустая строка.
3. За пустой строкой должны следовать данные приложения.
Дополнительные сведения о CGI, см. в спецификациях CGI по адресу http://hoohoo.ncsa.uiuc.edu/cgi/.
Настоятельно рекомендуется настроить отображение расширений имен файлов (для файлов сценариев). Отображение расширений имен файлов позволит автоматически выбрать интерпретатора исполняемого файла клиентского запроса, например Cmd.exe.
Каталоги документов World Wide Web должны иметь разрешение только на чтение. Любые исполняемые файлы, предназначенные для запуска с дисков файловой системы Windows NT (NTFS), должны иметь доступ только на чтение.
Командные файлы можно выполнять аналогично файлам CGI, но с максимальной предосторожностью, чтобы уменьшить вероятность нарушения системы защиты данных на сервере.
Примечание. Исполняемые файлы CGI могут иметь расширение EXE или CGI.
Например, чтобы защитить Internet Database Connector без проверки разрешений на файл с расширением IDC, можно в системе NTFS предоставить только соответствующим пользователям разрешение на выполнение файла Inetsrv\Server\Httpodbc.dll. Файл Httpodbc.dll содержит библиотеку динамической компоновки Internet Database Connector. Всякий раз, когда пользователь запросит Internet Database Connector, сервер проверит его права. Приложение будет запущено, если этому пользователю предоставлено разрешение на его выполнение.
Примечание. Если приложение ISAPI запущено, оно будет оставаться в памяти компьютера до тех пор, пока служба WWW не будет остановлена. Службы узла Web не отслеживают изменения описателя защиты после запуска приложения ISAPI. Если разрешения на файл ISAPI изменяются после запуска приложения, необходимо перезапустить службу WWW.
Соблюдайте осторожность при работе с таблицами управления доступом (ACL) каталога Winnt и его подкаталогами. Некоторые приложения ISAPI и базы данных требуют доступа к файлам и библиотекам динамической компоновки (DLL) в этих каталогах.
Примечание. Библиотеки динамической компоновки приложения ISAPI имеют расширение DLL или ISA.
Необходимо, чтобы каждый процесс, начатый приложением, использовал учетную запись с адекватными разрешениями. Если приложение взаимодействует с другими файлами, учетная запись, используемая программой, должна иметь соответствующие разрешения на доступ к этим файлам. По умолчанию приложения, запускаемые по учетной записи IUSR_имякомпьютера, должны иметь разрешения на выполнение и администрирование.
Ссылка HTML на приложение, которое не требует ввода данных от пользователя, может иметь следующий вид:
http://www.company.com/scripts/catalog.exe
где Scripts виртуальный каталог для интерактивных приложений.
При создании приложений, требующих ввода данных от пользователя, необходимо изучить как формы HTML, так и использование форм с ISAPI или CGI. Информация на эту тему широко доступна на Интернете и в других источниках.
| Расширение | Интерпретатор |
| BAT, CMD | Cmd.exe |
| IDC | Httpodbc.dll |
| EXE, COM | Операционная система |
Во-первых, ваши приложения находятся в виртуальном каталоге Scripts. Только администратор может добавлять программы в каталог, помеченный как каталог только для выполнения. Таким образом, пользователи не смогут скопировать свое приложение в этот каталог и затем выполнить его на вашем компьютере, не имея прав администратора.
Для учетной записи IUSR_имякомпьютера в виртуальном каталоге рекомендуется иметь разрешения на чтение и выполнение, например для запуска сценариев Perl (расширение PL) и файлов Internet Database Connector (расширения IDC и HTX); полное управление осуществляет только администратор. Не предоставляйте разрешение на запись в каталог, чтобы предотвратить копирование на ваш сервер программ злоумышленников.
Во-вторых, если служба WWW настроена на работу только с анонимными подключениями, все запросы от удаленных пользователей используют учетную запись IUSR_имякомпьютера. По умолчанию пользователь, вошедший в систему по учетной записи IUSR_имякомпьютера, не сможет удалять и изменять файлы системы Windows NT (NTFS), если только администратор не назначил этой записи соответствующие разрешения. Таким образом, даже если какая-либо программа была скопирована на ваш компьютер, она не сможет причинить большого вреда, потому что ее возможности будут ограничены разрешениями на доступ, предоставленными учетной записи IUSR_имякомпьютера.
Средства просмотра Web (например приложение Internet Explorer или средства просмотра других компаний, таких как Netscape) посылают запросы серверу Интернета, используя протокол HTTP. Сервер Интернета отвечает документом, форматируемым на языке гипертекстовой разметки HTML. Доступ к базам данных осуществляется через компонент служб узла Web, называемый приложением Internet Database Connector. Приложение Internet Database Connector (файл Httpodbc.dll) является библиотекой динамической компоновки ISAPI и использует для доступа к базам данных технологию ODBC.
Следующий рисунок раскрывает компоненты, необходимые для доступа в базы данных из служб узла Web.
Приложение Internet Database Connector использует два типа файлов для управления доступом к базе данных и созданием ответной страницы Web, а именно: файлы Internet Database Connector (IDC) и файлы на расширении языка HTML (HTX).
Файлы приложения Internet Database Connector содержат необходимую информацию, чтобы соединиться с соответствующим источником данных ODBC и выполнить оператор SQL. Файл приложения Internet Database Connector содержит также имя и местоположение файла расширения языка HTML.
Файл расширения языка HTML представляет собой шаблон для документа HTML, который будет возвращен средству просмотра Web после получения результатов запроса от базы данных.
Имена системных источников данных были введены в стандарт ODBC версии 2.5 специально для поддержки технологии ODBC в службах Windows NT.
2. Нажмите кнопку «OK».
3. Нажмите кнопку Добавить/удалить.
4. Нажмите кнопку «OK».
5. Установите флажок Драйверы ODBC и администрирование.
6. Нажмите кнопку «OK».
7. На экране появится диалоговое окно Установка драйверов.
8. Чтобы установить драйвер SQL Server, выделите драйвер SQL Server в списке Имеющиеся драйверы ODBC и нажмите кнопку «OK».
2. Дважды щелкните значок ODBC.
Если драйверы ODBC устанавливались ранее, в окне будет присутствовать список существующих источников данных.
6. Введите имя источника данных.
Для приложения Microsoft SQL Server в окне диалога установки следует указать имя сервера, сетевой адрес и сетевую библиотеку. Если вы не знаете, что следует задать в этих полях, оставьте значения, предлагаемые по умолчанию. Чтобы получить дополнительные сведения, нажмите кнопку Справка и откройте раздел с описанием сети.
9. Нажмите кнопку «Закрыть», чтобы закрыть окно диалога Источники данных.
10. Нажмите кнопку «OK», чтобы завершить установку ODBC и DSN.
Следующий рисунок показывает содержимое экрана приложения Internet Explorer после загрузки файла Dbsamp1.htm (предполагается, что службы узла Web установлены на компьютере, называемом webserver).
По щелчку гиперссылки Для выполнения запроса выберите эту ссылку на сервер отправляется другой запрос URL. Адрес URL предшествует тексту гиперссылки (форматируется как скрытый текст):
<A HREF="http://webserver/scripts/samples/sample.idc?">Для выполнения запроса выберите эту ссылку</A>
В адресе URL запрашивается файл приложения Internet Database Connector (Sample.idc). Отображение расширений имен файлов препятствует непосредственному указанию файла Httpodbc.dll в адресе URL.
Процедура использования приложения Internet Database Connector состоит из шести шагов, как показано на следующей схеме.
поле: значение
Datasource: Web SQL
Template: sample.htx
Datasource: Web SQL
Username: sa
Template: sample.htx
SQLStatement:
+SELECT au_lname, ytd_sales
+ from pubs.dbo.titleview
+ where ytd_sales>5000
Кроме того, в файле Sample.idc заданы:
Запрос SQLStatement в файле Sample.idc к базе данных Pubs на сервере SQL возвращает фамилии авторов, сумма продажи книг которых превысила с начала года 5000 долларов.
Результирующая страница Web, отображаемая приложением Microsoft Internet Explorer, будет выглядеть следующим образом:
Файл HTX это документ HTML с дополнительными командами (заключены в символы <%%> или <!--%%-->), используемыми для добавления динамических данных. Имеется шесть служебных слов (begindetail, enddetail, if, else, endif и %z) для разметки расположения результатов запроса к базе данных. Имена столбцов базы данных определяют данные, возвращаемые в документ HTML. Например, следующая строка в файле HTX добавляет данные из столбца Emailname для каждой обработанной записи:
<%begindetail%><%Emailname%><%enddetail%>
Файл Sample.htx содержит пример документа HTML с разметкой расположения результатов, возвращаемых из базы данных (команды выделены полужирным шрифтом).
Файл Sample.htx приведен с сокращениями.
<HTML>
<BODY>
<HEAD><TITLE>Авторы и объемы продаж за год</TITLE></HEAD>
<%if idc.sales eq ""%>
<H2>Авторы с объемом продаж более <I>5000</I></H2>
<%else%>
<H2>Авторы с объемом продаж более <I><%idc.sales%></I></H2>
<%endif%>
<P>
<%begindetail%>
<%if CurrentRecord EQ 0 %>
Результаты запроса:
<B>Автор Продажи за год (US$)<BR></B>
<%endif%>
<%au_lname%><%ytd_sales%>
<%enddetail%>
<P>
<%if CurrentRecord EQ 0 %>
<I><B>Отсутствуют авторы с объемом продаж больше </I><%idc.sales%>.</B>
<P>
<%else%>
<HR>
<I>
Эта страница Web получена в результате объединения результатов запроса SQL и шаблона Sample.htx.
<P>
Объединение выполнено приложением Microsoft Internet Database Connector; полученный документ передан этому средству просмотра службами узла Web корпорации Microsoft.
</I>
<%endif%>
</BODY>
</HTML>
Команды <%begindetail%> и <%enddetail%> ограничивают раздел для размещения возвращаемых данных. Столбцы, из которых осуществляется выборка данных, заключены в символы <%%> (в этом примере <%au_lname%> и <%ytd_sales%>).
Например, в последнем разделе запроса в Sample.idc возвращаются только авторы, реализация книг которых в течении года превысила 5000 долларов. Используя параметр, можно сформировать страницу Web, на которой пользователь решит, какое число ввести вместо 5000.
На странице Web пользователь вводит сумму реализации; введенная сумма присваивается переменной sales. Файл Dbsamp2.htm содержит форму с полем для ввода необходимого числа:
Ниже приведен синтаксис HTML для создания поля ввода и кнопки:
<FORM METHOD="POST" ACTION="/scripts/samples/sample2.idc">
<P>
Введите объем продаж за год: <INPUT NAME="sales" VALUE="5000" >
<P>
<INPUT TYPE="SUBMIT" VALUE="Выполнить запрос">
</FORM>
Файл приложения Internet Database Connector (Sample2.idc) использует параметр вместо числа 5000:
SQLStatement:
+SELECT au_lname, ytd_sales
+ from pubs.dbo.titleview
+ where ytd_sales > %sales%
Параметр имеет имя sales, что соответствует предложению <INPUT NAME= "sales" > на странице Web. Параметры должны заключаться в символы процента (%) для отличия от обычных идентификаторов SQL. Когда приложение Internet Database Connector встретит параметр в файле IDC, оно подставит значение, посланное средством просмотра Web, и отправит оператор SQL драйверу ODBC.
Символ процента (%) является символом подстановки в SQL. Символы подстановки применяются в запросах SQL для поиска элементов таблицы, содержащих возможные комбинации символов. Чтобы отличать символ подстановки SQL от маркера языка HTML необходимо ввести символ % в следующем виде: %%. Например:
SQLStatement:
+SELECT au_lname, ytd_sales, title
+ from pubs.dbo.titleview
+ where title like '%%%title%%%'
Символ процента для использования в качестве символа подстановки SQL введен дважды; кроме того, добавлены символы процента для разметки параметра. В примере, запрос ищет все записи, содержащие слово title в столбце title. Этот запрос возвращает следующее:
title
title and deed
main title page
author and title
Чтобы отобрать все записи, начинающиеся со слова title, можно создать следующий запрос:
SQLStatement:
+SELECT au_lname, ytd_sales, title
+ from pubs.dbo.titleview
+ where title like '%title%%%'
Запрос возвращает следующие данные:
title
title and deed
Чтобы отобрать все записи, завершающиеся словом title, можно создать следующий запрос:
SQLStatement:
+SELECT au_lname, ytd_sales, title
+ from pubs.dbo.titleview
+ where title like '%%%title%'
Запрос возвращает следующие данные:
title
author and title
С помощью одного запроса можно сформировать наборы страниц Web со ссылками для запуска других запросов. Например, можно отформатировать имя автора как ссылку на новый запрос и использовать ее для вывода названий книг отдельного автора.
Например, документ Dbsamp3.htm служит для запуска запроса из файла Sample3.idc, который в свою очередь использует файл Sample3.htx в качестве шаблона вывода. После обработки запроса документ Sample3.htx содержит фамилии авторов в виде ссылок, по щелчку которых отображаются названия книг соответствующего автора с помощью файлов Sample3a.idc и Sample3a.htx.
Обязательные поля в файле Internet Database Connector
| Поле | Описание |
| Datasource | Имя системного источника данных ODBC, созданное с помощью приложения ODBC панели управления или средствами, входящими в состав примеров. |
| Template | Имя файла расширения HTML (файл HTX) для форматирования результатов запроса. |
| SQLStatement | Выполняемый оператор SQL. Оператор SQL может содержать значения параметров, которые должны заключаться в символы процента (%). Предложение SQLStatement может занимать несколько строк в файле Internet Database Connector. После строки с полем SQLStatement каждая новая строка, начинающаяся со знака плюс (+), считается частью поля SQLStatement. Один файл может содержать несколько предложений SQLStatements. |
| Поле | Описание |
| DefaultParameters = параметр=значение
[, параметр=значение]
|
Значение, используемое для определения параметра, если он не задан клиентом |
| Expires | Число секунд ожидания перед обновлением кэшированной выходной страницы. Если последующий запрос идентичен, кэшированная страница возвращается клиенту без обращения к базе данных. По умолчанию выходные страницы не кэшируются. Кэширование применяется при задании поля Expires. |
| MaxFieldSize | Максимальная длина поля приложения IDC; любые символы, превышающие эту длину, отбрасываются. Параметр применяется только к полям, возвращенным из базы данных. Значение по умолчанию 8192 байт. |
| MaxRecords | Максимальное число записей, возвращаемых по отдельному запросу. По умолчанию значение MaxRecords не установлено, что соответствует 4 миллиардам записей. Установите значение, чтобы ограничить число возвращаемых записей. |
| ODBCConnection | Служит для добавления соединения в группу, использующую открытый канал связи с базой данных для выполнения новых запросов. Приложение Internet Database Connector посылает запросы в базу данных, используя файлы IDC, содержащие переменные Datasource, Username и Password. С помощью этого параметра можно улучшить производительность Internet Database Connector. Кроме того, предусмотрено значение запрещающее добавление соединения в группу. Применяйте значение nopool для более тонкого управления кэшом подключений. Существует ограничение на число соединений в группе, препятствующее объединению всех соединений.
Примечание. Чтобы применять группировку соединений по умолчанию, следует задать параметру системного реестра PoolIDCConnections значение 1. Дополнительные сведения см. в главе 10 Работа с данными системного реестра. |
| Password | Пароль, соответствующий имени пользователя. Если пароль не задан, это поле может быть пропущено. |
| RequiredParameters | Параметры (если они заданы) должны быть указаны клиентом; в противном случае будет возвращено сообщение об ошибке. Имена параметров отделяются с запятой. |
| Translationfile | Путь к файлу трансляции (содержит буквы типа а, ф или й), используемому средством просмотра при отображении документов в формате HTML. Если файл трансляции находится в каталоге, отличном от каталога файла IDC, необходимо указать полный путь к этому файлу. Синтаксис: Translationfile: C:\имякаталога\имяфайла. Используйте поле Translationfile при публикации базы данных на языке, отличном от английского. Файл трансляции является текстовым файлом и содержит кодировку символов в следующем формате: величина=строка<CR>, где величина международный символ и строка код трансляции HTML. |
| Username | Действующее имя пользователя для имени источника данных, указанное в поле Datasource.
Примечание. При использовании приложения Microsoft SQL Server с интегрированной функцией защиты поля имени и пароля в файле IDC игнорируются. Подключение к серверу SQL выполняется с помощью личных данных клиента службы Web (если они указаны в запросе). Для анонимного запроса имя и пароль пользователя определяются учетной записью анонимного пользователя (по умолчанию IUSR_имякомпьютера) в диспетчере служб Интернета. |
| Content-Type | Любой действующий тип MIME, описывающий тип возвращаемого клиенту документа. Для файла HTX на языке HTML, как правило, используется тип text/html. |
ODBCOptions: Имя параметра=Значение[,Имя параметра=Значение
]
Например, чтобы остановить выполнение запроса SQL, длящегося более 10 секунд, и разрешить трассировку вызовов функций ODBC, в файле IDC необходимо указать:
ODBCOptions: SQL_QUERY_TIMEOUT=10, SQL_OPT_TRACE=1, SQL_OPT_TRACEFILE=C:\Sql.log
Все параметры описаны в следующей таблице:
| Аргумент | Значение | Назначение |
| SQL_ACCESS_MODE | 0 = Чтение/запись
1 = Только чтение. |
Указание драйверу ODBC или источнику данных о выполнении операторов SQL с запросами на обновление данных (соединение не требуется). Этот режим используется для оптимизации стратегий блокировки, управления транзакциями и изменения других параметров, предусмотренных в соответствующем драйвере или источнике данных. Драйвер не требуется для защиты операторов от влияния источника данных. Взаимодействие драйвера и источника данных при обработке в запросе на чтение операторов SQL, не являющихся операторами только чтения, определяется реализацией. По умолчанию параметр имеет значение 0, что соответствует разрешению не чтение и запись. |
| SQL_LOGIN_TIMEOUT | Целое | Число секунд ожидания перед прерыванием подключения. Значение по умолчанию зависит от драйвера и должно быть отлично от нуля. Если параметр равен 0, блокировка по времени отсутствует и длительность попытки соединения может быть произвольной. Если интервал ожидания превышает интервал времени, указанный в источнике данных, драйвер использует значение из источника данных. |
| SQL_OPT_TRACE | 0 = Трассировка выключена
1 = Трассировка включена |
При включенной трассировке, каждое обращение к функции ODBC, сделанное из приложения Httpodbc.dll, записывается в файл трассировки. Файл трассировки задается с помощью параметра SQL_OPT_TRACEFILE. Если файл уже существует, записи добавляются в этот файл. В противном случае, создается новый файл. Если трассировка включена, но файл трассировки не задан, обращения к функциям ODBC выводятся в файл Sql.log. |
| SQL_OPT_TRACEFILE | Имя файла | Имя файла трассировки, используемое когда SQL_OPT_TRACE=1. Значение по умолчанию: SQL.LOG |
| SQL_PACKET_SIZE | Целое | Размер пакета (в байтах), используемый для обмена информацией между системой управления базой данных и сервером Web.
Примечание. Многие источники данных либо не поддерживают этот параметр, либо могут только возвращать размер пакета. Если заданный размер больше максимального размера или меньше минимального размера пакета, драйвер использует предельное значение. |
| SQL_TRANSLATE_DLL | Имя файла | Имя библиотеки динамической компоновки (DLL) с функциями SQLDriverToDataSource и SQLDataSourceToDriver, предназначенными для загрузки драйвера и выполнения трансляции. |
| SQL_TRANSLATE_OPTION | Целое | Параметр, управляющий функциональными возможностями трансляции, которые являются специфическими для используемой библиотеки динамической компоновки (DLL) трансляции. См. документацию драйвера и библиотеки динамической компоновки трансляции. |
| SQL_TXN_ISOLATION | Целое
1=Чтение без занесения 2=Чтение с занесением 4=Повторяемое чтение 8=Объединяемое чтение 16=Создание версий |
Задание уровня изоляции транзакции. Приложение Internet Database Connector не поддерживает транзакции, более продолжительные, чем запрос в файле IDC. В некоторых СУБД, задав параметру значение 1, можно распараллелить обработку данных и повысить производительность. Для этого уровня изоляции данные, которые не были переданы в базу данных другими транзакциями, не могут быть восстановлены. |
| SQL_MAX_LENGTH | Целое | Максимальное количество данных, которые драйвер возвращает из текстового или двоичного столбца. Этот параметр предназначен для разгрузки потока данных в сети и используется, если в источнике данных (в противоположность драйверу) предусмотрена такая возможность. |
| SQL_MAX_ROWS | Целое | Максимальное число строк, возвращаемых оператором SELECT. Если параметр равняется 0 (значение по умолчанию), драйвер возвращает все отобранные строки. Этот параметр предназначен для разгрузки потока данных в сети в дополнение к встроенной переменной MaxRecords приложения Internet Database Connector, которая ограничивает число отобранных строк. |
| SQL_NOSCAN | 0=Искать и конвертировать предложения escape
1=Не искать и не конвертировать предложения escape |
Включает поиск предложений escape в строках SQL. Если параметр равен 0 (значение по умолчанию), драйвер ищет предложения escape в строках SQL. Если параметр равен 1, драйвер не ищет предложения escape в строках SQL; вместо этого, драйвер посылает оператор непосредственно источнику данных. Если оператор SQL не содержит предложения escape (они используют специальный синтаксис с фигурными скобками), параметру можно присвоить значение 1, что даст небольшое увеличение производительности драйвера. |
| SQL_QUERY_TIMEOUT | Целое
0=Без блокировки |
Число секунд ожидания перед прерыванием выполнения оператора SQL. Если параметр равен 0 (значение по умолчанию) блокировка по времени выполнения отсутствует. Если параметр превышает интервал, заданный в источнике данных, используется значение из источника данных. |
| Целое | Зависит от драйвера | Значение параметра драйвера может быть задано в виде число=параметр. Например:
4322=1, 234=String |
Если имя параметра в файле IDC заключено в одинарные кавычки, каждый элемент списка должен их использовать. Имя параметра заключается в кавычки всякий раз, когда столбец в предложении IN содержит текст или другой тип, применяющий литералы (например тип дата/время). Если одинарные кавычки отсутствуют в имени параметра, они отсутствуют в элементах списка. Не следует применять кавычки, если столбцы предложения IN имеют числовой тип.
Например, если форма HTML содержит поле со списком:
<SELECT MULTIPLE NAME="region">
<OPTION VALUE="Western">
<OPTION VALUE="Eastern">
<OPTION VALUE="Northern">
<OPTION VALUE="Southern">
</SELECT>
в файле IDC можно задать оператор SQLStatement:
SQLStatement: SELECT name, region FROM customer WHERE region IN ('%region%')
Если пользователь выбирает значения Northern, Western и Eastern в форме HTML, оператор SQL может быть преобразован следующим образом:
SELECT name, region FROM customer WHERE region IN ('Northern', 'Western', 'Eastern')
Другой пример, использующий числовые данные, показан ниже (в файле IDC отсутствуют одинарные кавычки):
<SELECT MULTIPLE NAME="year">
<OPTION VALUE="1994">
<OPTION VALUE="1995">
<OPTION VALUE="1996">
</SELECT>
Оператор SQLStatement в файле IDC:
SQLStatement: SELECT product, sales_year FROM sales WHERE sales_year IN (%year%)
Если пользователь выбирает значения 1994 и 1995 в форме HTML, оператор SQL может быть преобразован следующим образом:
SELECT product, sales_year FROM sales WHERE sales_year IN (1994, 1995)
SQLSTatement:
+insert into perf(testtime, tag) values (getdate(), '%tag%')
+SELECT au_lname, ytd_sales from pubs.dbo.titleview where ytd_sales>5000
+SELECT count(*) as nrecs from pubs.dbo.titleview where ytd_sales>5000
SQLStatement:
+insert into perf(testtime, tag) values (getdate(), '%tag%')
SQLStatement:
+SELECT au_lname, ytd_sales from pubs.dbo.titleview where ytd_sales>5000
SQLStatement:
+SELECT count(*) as nrecs from pubs.dbo.titleview where ytd_sales>5000
Максимальная производительность достигается при работе с параллельными запросами (если такой режим поддерживается системой управления базой данных).
<%begindetail%>
<%au_lname%>: <%ytd_sales%>
<%enddetail%>
создаст список значений из столбцов au_lnam и ytd_sales. Таким способом можно получить данные из любого столбца, а раздел может находиться в любом месте файла расширения языка HTML.
Примечание. Если запрос не возвращает данные раздел <%begindetail%> будет пропущен. Для каждому оператору SQL (например SELECT), создающему набор результатов, в файле HTX должен соответствовать раздел <%begindetail%>
<%begindetail%><%if CurrentRecord EQ 0 %>
Обработка результатов запроса:
<%au_lname%>$<%ytd_sales%>
<%endif%>
<B>Авторы и объемы продаж за год<BR></B>
<%endif%>
<%enddetail%>
<P>
<%if CurrentRecord EQ 0 %>
<I><B>Отсутствуют авторы с объемом продаж больше </I><%idc.sales%>.</B>
<P>
<%else%>
<HR>
<I>
Эта страница Web получена в результате объединения результатов запроса SQL и шаблона Sample.htx.
<P>
Объединение выполнено приложением Microsoft Internet Database Connector; полученный документ передан этому средству просмотра службами узла Web корпорации Microsoft.
</I>
</BODY>
</HTML>
Основной синтаксис:
<%if условие %>
текст HTML
[<%else%>
текст HTML]
<%endif%>
Прототип условие задается в следующем виде:
где оператор должен быть одним из следующих:
| EQ | если операнд1 равен операнду2 |
| LT | если операнд1 меньше чем операнд2 |
| GT | если операнд1 больше чем операнд2 |
| CONTAINS | если любая часть операнд1 содержит операнд2 |
<%begindetail%>
<%if au_lname EQ "Green"%>
этот парень зелен!
<%endif%>
<%enddetail%>
В условии оператора <%if %> можно использовать переменные протокола HTTP. Например, чтобы отформатировать страницу в зависимости от средства просмотра Web клиента в файл расширения языка HTML следует добавить строки:
<%if HTTP_USER_AGENT contains "Mozilla"%>
средство просмотра клиента поддерживает усовершенствованные средства HTML
<%else%>
используется средство просмотра <%HTTP_USER_AGENT%>
<%endif%>
Встроенная переменная MaxRecords содержит значение поля MaxRecords в файле Internet Database Connector. Переменные MaxRecords и CurrentRecord могут использоваться только в операторах <%if%>.
Значение параметра sales: <%idc.sales%>
2. Преобразовать тире в символы подчеркивания.
3. Преобразовать все буквы в прописные.
В следующей таблице приведен список основных переменных (переменных среды для приложений CGI и переменных HTTP для приложений IDC).
Переменные сервера служб узла Web
| Переменная | Значение |
| ALL_HTTP | Все заголовки HTTP, которые не были переданы ни в одну из приведенных переменных; эти переменные имеют форму HTTP_<имя поля заголовка>, например:
HTTP_ACCEPT: */*, q=0.300, audio/x-aiff, audio/basic, image/jpeg, image/gif, text/plain, text/html |
| AUTH_TYPE | Тип проверки подлинности. Если имя пользователя проверялось сервером, содержит значение Basic. В противном случае отсутствует. |
| CONTENT_LENGTH | Число байтов, передаваемых сценарию от клиента. |
| CONTENT_TYPE | Тип данных в основном тексте запроса POST. |
| GATEWAY_INTERFACE | Версия рабочей спецификации CGI (Common Gateway Interface) сервера. |
| HTTP_ACCEPT | Специальный заголовок HTTP. Значения полей accept объединены и разделены запятыми (,); например, если следующие строки являются частью заголовка HTTP:
accept: */*; q=0.1тогда переменная HTTP_ACCEPT имеет значение: */*; q=0.1, text/html, image/jpeg |
| LOGON_USER | Учетная запись пользователя Windows NT. |
| PATH_INFO | Дополнительные сведения о пути, предоставленные клиентом. Содержит завершающую часть адреса URL, стоящую после имени сценария, но до строки запроса. |
| PATH_TRANSLATED | Значение PATH_INFO (любое виртуальное имя преобразовано в спецификацию каталога). |
| QUERY_STRING | Данные после знака вопроса (?) в адресе URL, используемые сценарием. |
| REMOTE_ADDR | Адрес IP клиента. |
| REMOTE_HOST | Адрес узла клиента. |
| REMOTE_USER | Имя пользователя, представляемое клиентом и проверяемое сервером. |
| REQUEST_METHOD | Метод запроса HTTP. |
| SCRIPT_NAME | Имя запускаемого сценария. |
| SERVER_NAME | Имя сервера (или адрес IP) в том виде, который применяется в адресе URL при обращении к самому себе. |
| SERVER_PORT | Порт TCP/IP, по которому запрос был получен. |
| SERVER_PORT_SECURE | Имеет значение 0 или 1. Значение 1 указывает на то, что запрос находится на зашифрованном порту. |
| SERVER_PROTOCOL | Название и версия информационного протокола запроса, обычно HTTP/1.0. |
| SERVER_SOFTWARE | Имя и версия сервера Web, под управлением которого выполняется приложение Internet Server Extension. |
| URL | Адрес URL запроса. |
© 1996 Microsoft Corporation. Все права защищены.