Поделиться через


Установка отчетов и службы IIS параллельно

Область применения: SQL Server 2016 (13.x) Reporting Services и более поздних версий Сервер отчетов Power BI

Сведения о содержимом, связанном с предыдущими версиями служб SQL Server Reporting Services (SSRS), см. в статье "Что такое службы SQL Server Reporting Services?

Службы SQL Server Reporting Services (SSRS) и IIS могут быть установлены и запущены на одном и том же компьютере. Версия IIS, используемая вами, определяет проблемы взаимодействия, которые необходимо устранить.

Версия служб IIS Проблемы Description
8.0, 8.5 Запросы, предназначенные для одного приложения, принимаются другим приложением.

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

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

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

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

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

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

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

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

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

Пример Запросить
https://123.234.345.456:80/reports Получает все запросы, которые передаются по адресу https://123.234.345.456/reports или https://<computername>/reports, если служба доменных имен способна разрешить этот IP-адрес в это имя узла.
https://+:80/reports Получает любые запросы, отправленные любому IP-адресу или имени узла, являющимся допустимыми для этого компьютера, при условии, что URL-адрес содержит имя виртуального каталога reports.
https://123.234.345.456:80 Получает все запросы, в которых указан адрес https://123.234.345.456 или https://<computername>, если служба доменных имен способна разрешить этот IP-адрес в это имя узла.
https://+:80 Получает запросы, которые еще не получены другими приложениями, для конечных точек приложений, сопоставленных со всеми назначенными.
https://*:80 Получает запросы, которые еще не получены другими приложениями, для конечных точек приложений, сопоставленных со всеми неназначимыми.

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

Резервирования URL-адресов для СЛУЖБ IIS 8.0, 8.5 с SQL Server Reporting Services

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

Приложение Резервирование URL-адресов Description Прием запроса
ReportServer https://+:80/ReportServer Сильный шаблон для доступа к порту 80, с указанием виртуального каталога сервера отчетов. Получает все запросы на порт 80, в которых указан виртуальный каталог сервера отчетов. Веб-служба сервера отчетов получает все запросы, отправленные по адресу https://<имя_компьютера>/reportserver.
Веб-портал https://+:80/Reports Сильный шаблон для доступа к порту 80, с указанием виртуального каталога Reports. Получает все запросы на порт 80, в которых указан виртуальный каталог reports. Веб-портал получает все запросы, отправленные по адресу https://<имя_компьютера>/reports.
IIS https://*:80/ Слабый шаблон для доступа к порту 80. Получает все остальные запросы на порт 80, которые не получаются другим приложением.

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

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

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

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

Учитывая эту конфигурацию, запрос, отправляемый для https://\<computername>:80/reports получения веб-порталом. Приложение, доступ к которому предоставляется с помощью виртуального каталога Reports в службах IIS, после установки экземпляра сервера отчетов больше не будет получать запросы.

Если вы выполняете параллельное развертывание старых и более новых версий служб Reporting Services, скорее всего, столкнутся с этой проблемой маршрутизации. Эта проблема возникает, так как все версии служб Reporting Services используют "ReportServer" и "Отчеты" в качестве имен виртуальных каталогов для сервера отчетов и приложений веб-портала, что повышает вероятность того, что у вас есть виртуальные каталоги "отчеты" и "сервер отчетов" в IIS.

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

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

  • Для установок, настраиваемых вручную, применяйте предусмотренные по умолчанию соглашения об именах в настраиваемых URL-адресах. Если вы устанавливаете sql Server 2016 (13.x) Reporting Services или более поздней версии (SSRS) в качестве именованного экземпляра, включите имя экземпляра при создании виртуального каталога.