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

SQL SERVER WEB ASSISTANT

Сначала познакомимся с SQL Server Web Assistant - простым и мощным инструментом, позволяющим создавать HTML-файлы на базе запросов SQL Server, не прибегая к программированию. Мастер Web Assistant Wizard позволяет генерировать стандартные HTML-файлы на основе данных SQL Server лишь один раз или делать это регулярно как задание SQL Server. Web Assistant Wizard генерирует HTML-файлы с использованием запросов T-SQL или хранимых процедур. Данный инструмент следует использовать следующим образом.

Запустите SQL Server Enterprise Manager из меню Start\Programs\Microsoft SQL Server\Enterprise Manager. Разверните Microsoft SQL Server и SQL Server Group до списка серверов, и выберите свой сервер. Из главного меню Enterprise Manager выберите пункт Tools\Wizards. В диалоговом окне Select Wizard щелкните на разделе Management, затем Web Assistant Wizard, как показано на Рисунке 1. Пройдем по страницам мастера.

1. В диалоговом окне Select Database выберите базу данных pubs из раскрывающегося списка. База данных pubs (Publications) - пример базы данных SQL Server. Щелкните на кнопке Next. В диалоговом окне, показанном на Рисунке 2, укажите имя задания Web Assistant (предполагается, что позднее его придется запускать вручную или в рамках регулярно исполняемого сценария); по умолчанию принимается имя «pubs Web Page».
2. Выберите метод извлечения данных из SQL Server, отображаемых на Web-странице, автоматически создаваемой мастером. Возможны следующие варианты:

- Data from the tables and columns that I select - режим графического выбора таблиц и столбцов, которые послужат источником данных для генерируемого HTML-файла. Данный вариант задается по умолчанию.

- Result(s) of a stored procedure I select - пользователь выбирает хранимую процедуру для обработки столбцов, которые станут источником данных для HTML-файла. Хранимая процедура SQL Server - заранее скомпилированный набор операторов T-SQL, сохраненных под каким-нибудь именем и исполняемых как единое целое. Существуют хранимые процедуры для управления SQL Server и отображения информации о базах данных и пользователях. Хранимые процедуры в составе SQL Server называются системными хранимыми процедурами. Достоинства хранимых процедур - быстрота и возможность повторного использования.

- Data from the Transact-SQL statement I specify - это режим ввода оператора T-SQL. T-SQL - язык, содержащий команды для управления экземплярами (instances) SQL Server; создания и управления всеми объектами в экземпляре SQL Server. Он также позволяет вставлять, извлекать, изменять и удалять данные в таблицах SQL Server. T-SQL - расширение языка, определенного в стандартах SQL, публикуемых Международной организацией стандартизации (ISO) и Американским национальным институтом стандартов (ANSI).

Для данного примера выберите первый вариант - Data from the tables and columns that I select - и щелкните на кнопке Next, чтобы вывести на экран диалоговое окно, показанное на Рисунке 3.

3. Выберите таблицу и столбцы, которые нужно показать на Web-странице. Из раскрывающегося списка Available tables выберите пункт authors; щелкните на кнопке Add All, чтобы выделить все столбцы таблицы. Щелкните на кнопке Next.
4. В диалоговом окне Select Rows укажите строки таблицы, которые нужно вывести на создаваемой Web-странице. На этом этапе запрос можно ограничить, указав как критерий логические "и/или"; пользователи, владеющие T-SQL, могут ввести T-SQL оператор WHERE. Ради простоты примем предлагаемый по умолчанию режим All of the Rows. Далее нажимаем Next.
5. В диалоговом окне Schedule the Web Assistant Job можно указать частоту генерации Web-страницы. Возможны три варианта: Only one time when I complete this wizard ("Только один раз после окончания работы этого мастера"), On demand ("По требованию") и When SQL Server data changes ("При изменении данных SQL Server"). Для данного примера выберем принимаемый по умолчанию режим Only one time when I complete this wizard, чтобы сформировать лишь один запрос на создание страницы. Нажимаем Next.
6. В диалоговом окне Publish the Web Page укажите имя файла и каталог, в который нужно поместить Web-страницу. Если вы хотите, чтобы страница была доступна на Web-сервере, поместите ее где-нибудь в структуре папок сайта. Я помещаю файл в папку IISAdministrator в каталоге \inetpub\wwwroot. Но поскольку создается статическая Web-страница (с динамическими данными из SQL Server), файл можно сохранить в любом месте и открывать его с помощью Microsoft Internet Explorer (IE). Выбрав расположение и имя HTML-страницы, нажимаем Next.
7. Пусть Web Assistant отформатирует HTML-файл, или воспользуйтесь для форматирования файлом шаблона (для этого следует разобраться с файлами шаблонов.) В данном случае примите выбираемый по умолчанию вариант Yes, help me format the Web page («Да, мне нужно помочь отформатировать страницу Web»). Можно также выбрать иной набор символов, например, международный. Укажите набор, подходящий для вашего языка, или оставьте принимаемый по умолчанию Unicode (UTF-8). Далее нажимаем Next.
8. Укажите заголовки для Web-страницы. Измените принимаемый по умолчанию заголовок на более описательный (например, Authors from the PUBS database – «Авторы из базы данных PUBS»). Введите заголовок в HTML-таблицу, содержащую данные. Введите размер шрифта для заголовка HTML-таблицы и установите флажок Apply a time and date stamp to the Web page («Проставить метки времени и даты на Web-странице»). Далее нажимаем Next.
9. Укажите параметры форматирования столбцов и рамки, и характеристики шрифта. Для данного примера оставьте значения, принимаемые по умолчанию, и нажмите Next.
10. Укажите одну или несколько гиперссылок, если нужно добавить ссылки к Web-странице. Оставим принимаемый по умолчанию вариант No. Далее нажимаем Next.
11. Как показано на Рисунке 4, можно ограничить число строк, которые SQL Server выдает в ответ на запрос, и число строк, отображаемых на странице. Чтобы отобразить на Web-странице всю таблицу авторов, оставьте заданный по умолчанию вариант No, return all rows of data, но выберите режим Yes, link the successive pages together («Да, объединить последовательные страницы»), затем введите с клавиатуры число 15, чтобы ограничить число строк данных, отображаемых на каждой странице, пятнадцатью. Нажмите Next.
12. На последней странице Web Assistant Wizard выводится сводка выбранных пользователем параметров, как показано на Рисунке 5. Оператор, использовавшийся для обращения к базе данных, можно сохранить, щелкнув на кнопке Write Transact-SQL to File. По нажатию на кнопке Finish мастер генерирует HTML-страницу.

Теперь используйте Windows Explorer для перехода в папку, в которую мастер поместил файл. В ней имеется два файла (authors1.htm и authors2.htm), поскольку на каждой странице содержится не более 15 строк из базы данных SQL Server, а таблица Authors состоит из более чем 15 строк. Запустите браузер и перейдите к HTML-файлу authors1.htm. Поскольку файлы размещены на Web-сервере IIS, необходимо переместиться в каталог http://localhost/IISAdministrator/Authors1.htm, как показано на Рисунке 6.

Обратите внимание на ссылку Next в нижней части каждой страницы. Отмечу, что эти ссылки указывают на статические HTML-файлы - моментальный снимок базы данных во время работы мастера. Рассмотрим теперь, как создать динамические Web-страницы, управляемые SQL Server, с помощью объектов ActiveX Data Objects (ADO) и ASP.

ДИНАМИЧЕСКИЙ ДОСТУП К ДАННЫМ SQL SERVER

ADO - мощная и простая в применении объектная модель для доступа к данным. ADO - предпочтительный интерфейс доступа к данным для разработки Web-приложений с применением IIS и ASP. Кроме того, ADO обеспечивает прикладной программный интерфейс для многих источников данных, а не только для SQL Server.

Microsoft позиционирует ADO в качестве промежуточного слоя для OLE DB. Модель ADO подходит для работы с любым провайдером OLE DB (например, SQL Server, Microsoft Exchange Server, Active Directory - AD). ADO чаще всего используется в файлах ASP вместе с DSN (Data Source Name - имя источника данных). DSN - логическое имя, используемое ODBC для указания информации, необходимой для доступа к данным. DSN используется в IIS для связи с источником данных ODBC, например, базой данных SQL Server Pubs.

Необходимо создать DSN на машине Web-сервера IIS. ASP-файл использует DSN для доступа к базе данных pubs на машине SQL Server. Чтобы создать DSN в среде Windows NT 4.0, следует дважды щелкнуть на значке Control Panel Data Sources (odbc). В Windows 2000 нужно дважды щелкнуть на значке Control Panel Administrative Tools, затем дважды - на Data Sources (odbc), чтобы вывести на экран диалоговое окно ODBC Data Source Administrator, показанное на Рисунке 7.

Требуется создать имя System DSN, доступное всем пользователям машины, на которой установлены службы, работающие как часть операционной системы (то есть IIS). Поля User и File DSN доступны только пользователю, зарегистрированному в данный момент. Обратитесь к закладке System DSN, щелкните на кнопке Add и выполните следующие действия:

1. Чтобы создать новый источник данных, начните с определения типа данных, с которыми нужно установить связь - в данном случае это SQL Server. Прокрутите до конца список в диалоговом окне Create New Data Source и выберите пункт SQL Server. Щелкните на кнопке Finish и переходите к мастеру SQL Server Wizard с новым источником данных.
2. На следующей странице мастера задайте для DSN имя pubs. Обычно DSN называют по имени присоединенной базы данных SQL Server. Благодаря этому соглашению удается избежать путаницы на машинах IIS со многими DSN, связанными с множеством машин SQL Server. 3. Введите описание источника данных. Обычно указывают имя машины SQL Server и базы данных, с которой связывается DSN. Однако здесь дано описание System DSN for the PUBS database. 4. Выберите имя компьютера SQL Server, с которым устанавливается связь. Возможно, придется ввести его имя. Щелкните на кнопке Next. 5. Назначьте пароль и имя пользователя для System DSN. В принимаемом по умолчанию варианте (With Windows NT authentication using the network login ID) используются данные текущего пользователя. Безусловно, такой метод IIS не может быть использован, так как администратор IIS обычно завершает свой сеанс по окончании работы. В этом случае при попытке использовать System DSN для связи с SQL Server процедура аутентификации IIS закончится неудачей. Поэтому следует выбрать вариант With SQL Server authentication using a login ID and password entered by the user, а затем ввести действительное имя и пароль пользователя на сервере SQL, обладающего полномочиями для чтения базы данных pubs. Поскольку код примера не предназначен для реальной рабочей среды, для аутентификации System DNS я воспользовался всемогущей учетной записью sa. Далее нажимаем Next. 6. В ответ на запрос Change the default database («Изменить принимаемую по умолчанию базу данных») выберите из раскрывающегося списка pubs. Уже понятно, что связь с SQL Server установлена, потому что мастер составил список всех баз данных на машине, к которой производилось подключение. Приняв все остальные параметры по умолчанию, щелкните на кнопке Next, чтобы продолжить работу. 7. На следующей странице "мастера" можно выбрать язык, метод шифрования и процедуру регистрации. Оставьте параметры, принимаемые по умолчанию, и щелкните Next, чтобы перейти к заключительной странице мастера, на которой показаны все выбранные значения (Рисунок 8). Щелкните на кнопке Test Data Source, чтобы проверить связь с SQL Server.

Итак, имя System DSN, которое может быть использовано в ASP-файлах, успешно создано. Теперь в ASP-файлах на IIS-серверах могут быть использованы все возможности SQL Server. Это первый и самый важный шаг для организации связи между IIS и базами данных SQL Server. В будущих статьях я продолжу развивать эту тему и предложу альтернативы связи IIS с SQL Server, а также представлю практические примеры прикладных программ.

Совет: Для запуска Web Assistant Wizard необходимо обладать следующими полномочиями:

- Права Create Procedure в избранной базе данных;

- Права Select в выбранных столбцах;

- Права создавать файлы в учетной записи экземпляра SQL Server.

Совет: Превосходный и самый подробный справочник по ADO - David Sussman и другие, Professional ADO 2.5 Programming (Wrox Press, 2000).
Совет: Щелкните на кнопке Client Configuration, чтобы убедиться, что DSN использует TCP/IP в качестве сетевой библиотеки. TCP/IP обеспечивает самый быстрый и надежный доступ к SQL Server, и, безусловно, единственный способ установить связь с SQL Server через брандмауэры и демилитаризованные зоны (DMZ).
Тим Хакэби - президент компании InterKnowlogy. Работал в группе Site Server 3.0 в корпорации Microsoft; является соавтором несколько книг, в том числе Beginning Site Server (Wrox); часто выступает на конференциях. Его адрес: timhuck@interknowlogy.com.