Параллельное развертывание служб Reporting Services и служб IIS

Службы SQL Server 2008 R2 Службы Reporting Services и IIS могут быть установлены и запущены на одном и том же компьютере. От используемой версии служб IIS будет зависеть, какие возникнут проблемы совместимости.

Версия служб IIS

Проблемы

Описание

IIS 6.0 и 7.0

Запросы, предназначенные для одного приложения, принимаются другим приложением.

Компонент HTTP.SYS предписывает правила приоритета для резервирования URL-адресов. Запросы, передаваемые в приложения, которые имеют одинаковое имя виртуального каталога и совместно отслеживают запросы, поступающие через порт 80, могут не достичь намеченной цели, если применяемое резервирование URL-адресов слабее резервирования URL-адресов другого приложения.

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

Использование уникальных имен виртуальных каталогов для веб-службы сервера отчетов и диспетчера отчетов может помочь избежать этого конфликта.

Подробные сведения об этом сценарии приведены в этом разделе.

IIS 5.1

Конфликт портов

По умолчанию в службах IIS 5.1 порт 80 резервируется для монопольного использования. Если служба SQL Server 2008 R2 Службы Reporting Services устанавливается в 32-разрядной версии Windows XP с пакетом обновления 2, по умолчанию для URL-адресов служб Reporting Services используется порт 8080:

http://<имя_сервера>:8080/reportserver

http://<servername>:8080/reports

На 64-разрядной платформе для URL-адресов служб Reporting Services по умолчанию используется порт 80. Службы IIS 5.1 в 64-разрядной версии Windows XP с пакетом обновления 2 используют компонент HTTP.SYS, что позволяет использовать порт 80 в обоих приложениях.

Правила приоритета для резервирования URL-адресов

Прежде чем приступать к устранению проблем совместимости служб IIS и Службы Reporting Services, необходимо понять правила приоритета резервирования URL-адресов. Правила приоритета можно обобщенно представить в виде следующей инструкции. Резервирование URL-адресов, в котором более явно определены значения, становится первым в очереди на получение запросов, которые согласуются с URL-адресом. 

  • Резервирование URL-адресов, указывающее виртуальный каталог, является более явным по сравнению с тем, в котором виртуальный каталог не задан.

  • Резервирование URL-адресов, в котором указан единственный адрес (в виде IP-адреса, полного доменного имени, сетевого имени компьютера или имени узла), является более явным по сравнению с резервированием, в котором указан шаблон.

  • Резервирование URL-адресов, в котором указан сильный шаблон, является более явным по отношению к резервированию со слабым шаблоном.

В следующих примерах приведен ряд резервирований URL-адресов, начиная от наиболее явного и заканчивая наименее явным:

Пример

Запрос

http://123.234.345.456:80/reports

Получает все запросы, которые передаются по адресу http://123.234.345.456/reports или http://<имя_компьютера>/reports, если служба доменных имен способна разрешить этот IP-адрес в это имя узла.

http://+:80/reports

Получает любые запросы, отправленные любому IP-адресу или имени узла, являющимся допустимыми для этого компьютера, при условии, что URL-адрес содержит имя виртуального каталога reports.

http://123.234.345.456:80

Получает любой запрос, в котором указан адрес http://123.234.345.456 или http://<имя_компьютера>, при условии, что служба доменных имен способна разрешить этот IP-адрес в это имя узла.

http://+:80

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

http://*:80

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

Одним из индикаторов конфликта портов будет следующее сообщение об ошибке: «System.IO.FileLoadException: процесс не может получить доступ к файлу, поскольку тот используется другим процессом. (Исключение HRESULT: 0x80070020)».

Резервирования URL-адресов для служб IIS 6.0 и 7.0 и служб SQL Server 2008 Reporting Services

Изучение правил приоритета, приведенных в предыдущем разделе, позволяет разобраться, как резервирования URL-адресов, определенные для служб Reporting Services и IIS, поддерживают совместимость. Службы Reporting Services получают запросы, в которых явно указаны имена виртуальных каталогов для их приложений; службы IIS получают все остальные запросы, которые могут затем быть направлены приложениям, запущенным в рамках модели процесса IIS.

Приложение

Резервирование URL-адресов

Описание

Прием запроса

Сервер отчетов

http://+:80/ReportServer

Сильный шаблон для доступа к порту 80, с указанием виртуального каталога сервера отчетов.

Получает все запросы на порт 80, в которых указан виртуальный каталог сервера отчетов. Веб-служба сервера отчетов получает все запросы с адресом http://<имя_компьютера>/reportserver.

Диспетчер отчетов

http://+:80/Reports

Сильный шаблон для доступа к порту 80, с указанием виртуального каталога Reports.

Получает все запросы на порт 80, в которых указан виртуальный каталог reports. Диспетчер отчетов получает все запросы с адресом http://<имя_компьютера>/reports.

IIS

http://*:80/

Слабый шаблон для доступа к порту 80.

Получает любые оставшиеся запросы на порт 80, которые не получены другим приложением.

Параллельное развертывание сервера SQL Server 2008 и службы SQL Server 2005 Reporting Services на службы IIS 6.0 или 7.0

Если веб-сайты IIS имеют имена виртуальных каталогов, идентичные используемым в службах Reporting Services, возникают проблемы функциональной совместимости служб IIS и служб Reporting Services. Например, предположим, что имеется следующая конфигурация.

  • Веб-сайт в службах IIS, который назначен на порт 80 и виртуальный каталог с именем Reports.

  • Экземпляр сервера отчетов SQL Server 2008 R2, установленный в конфигурации по умолчанию, где в резервировании URL-адресов также указан порт 80, а приложение диспетчера отчетов также использует Reports в качестве имени виртуального каталога.

В такой конфигурации запрос, отправленный по адресу http://<имя_компьютера>:80/reports, будет получен диспетчером отчетов. Приложение, доступ к которому предоставляется с помощью виртуального каталога Reports в службах IIS, после установки экземпляра сервера отчетов SQL Server 2008 R2 больше не будет получать запросы.

При работе развернутых параллельно старой и новой версии служб Службы Reporting Services, по всей вероятности будут обнаруживаться только что описанные проблемы маршрутизации. Это связано с тем, что во всех версиях служб Службы Reporting Services в качестве имен виртуальных каталогов для приложений сервера отчетов и диспетчера отчетов используется ReportServer и Reports, в результате чего повышается вероятность наличия виртуальных каталогов reports и reportserver в службах IIS.

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

  • Для установок служб Reporting Services используйте имена виртуальных каталогов, которые не используются ни одним веб-сайтом IIS на том же порте, что и в службе Reporting Services. Если возникает конфликт, установите службы Reporting Services в режиме «только файлы» (с помощью программы установки, но не настраивая параметры сервера в мастере установки), чтобы иметь возможность настроить виртуальные каталоги после завершения установки. Одним из индикаторов конфликта конфигурации будет следующее сообщение об ошибке: «System.IO.FileLoadException: процесс не может получить доступ к файлу, поскольку тот используется другим процессом. (Исключение HRESULT: 0x80070020)».

  • Для установок, настраиваемых вручную, применяйте предусмотренные по умолчанию соглашения об именах в настраиваемых URL-адресах. Если службы SQL Server 2008 R2 Службы Reporting Services устанавливается в качестве именованного экземпляра, включите имя экземпляра при создании виртуального каталога.

Совместимость со службами IIS 5.1 в операционной системе Windows XP с пакетом обновления 2

Операционная система Windows XP с пакетом обновления 2 содержит компонент HTTP.SYS, необходимый для служб Службы Reporting Services. Но даже если в операционной системе доступен компонент HTTP.SYS, он не используется в службах IIS 5.1. Вместо этого службы IIS 5.1 принимают все запросы на порт 80 или к настроенному для использования порту. В компоненте HTTP.SYS не предусмотрено резервирование URL-адресов для служб IIS 5.1, поэтому отсутствует централизованное управление очередью запросов, которая позволяла бы веб-приложениям служб Службы Reporting Services получать запросы на тот же порт.

Поэтому в конфигурации по умолчанию для сервера отчетов, который устанавливается в 32-разрядной операционной системе Windows XP с пакетом обновления 2, предусмотрено использование порта 8080 для веб-службы сервера отчетов и диспетчера отчетов. В следующей таблице показаны резервирования URL-адресов для веб-службы и диспетчера отчетов.

  • http://+:8080/reportserver

  • http://+:8080/reports

Использование порта, отличного от заданного по умолчанию, в резервированиях URL-адресов для приложений служб Службы Reporting Services помогает избежать конфликтов URL-адресов при параллельной работе со старыми версиями служб Службы Reporting Services.

Если на одном и том же компьютере установлены экземпляры сервера отчетов старой и новой версий, то URL-адреса http://<имя_сервера>/<сервер_отчетов> по умолчанию применяются для сервера отчетов служб Службы Reporting Services 2005, доступ к которому предоставляется с помощью служб IIS, а URL-адреса http://<имя_сервера>:8080/<сервер_отчетов> — для сервера отчетов служб SQL Server 2008 R2 Службы Reporting Services.