Установка отчетов и службы 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) в качестве именованного экземпляра, включите имя экземпляра при создании виртуального каталога.