您可以在同一部計算機上安裝和執行 SQL Server 2014 Reporting Services (SSRS) 和 Internet Information Services (IIS)。 您使用的 IIS 版本會決定您必須解決的互作性問題。
| 適用於: Reporting Services 原生模式 |
| IIS 版本 | 問題 | 說明 |
|---|---|---|
| IIS 6.0、7.0、8.0、8.5 | 適用於一個應用程式的要求會由不同的應用程式接受。 HTTP.SYS會強制執行 URL 保留的優先順序規則。 如果一個應用程式的 URL 保留項目相對於另一個應用程式的 URL 保留項目較弱,則傳送至具有相同虛擬目錄名稱並共同監控埠 80 的應用程式的要求可能無法到達預期的目標。 |
在特定情況下,取代 URL 保留配置中另一個 URL 端點的已註冊端點可能會接收適用於其他應用程式的 HTTP 要求。 針對報表伺服器 Web 服務和報表管理員使用唯一的虛擬目錄名稱,可協助您避免這種衝突。 本主題提供此案例的詳細資訊。 |
URL 保留的優先順序規則
您必須先瞭解 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://<計算機名稱>/報告的所有要求,前提是網域名稱服務能將IP位址解析為該主機名稱。 |
| http://+:80/reports | 只要 URL 包含「報告」虛擬目錄名稱,就會接收任何傳送至該電腦有效IP位址或主機名的要求。 |
| http://123.234.345.456:80 | 如果網域名稱服務可以將 IP 位址解析為該主機名,則會收到任何要求,這些要求指定了 http://123.234.345.456 或 http://< 計算機名稱>。 |
| http://+:80 | 接收其他應用程式尚未接收到的要求,針對對應至All Assigned的任何應用程式端點。 |
| http://*:80 | 針對對應至 [所有未指派] 的應用程式端點,接收其他應用程式尚未接收的要求。 |
埠衝突的一個指示是,您會看到下列錯誤訊息:「System.IO.FileLoadException:進程無法存取檔案,因為它正由另一個進程使用。 (HRESULT 的例外狀況:0x80070020)。
IIS 6.0、7.0、8.0、8.5 與 SQL Server 2014 Reporting Services 的 URL 保留設定
假設上一節所述的優先順序規則,您可以開始瞭解為 Reporting Services 和 IIS 定義 URL 保留專案如何提升互作性。 Reporting Services 會接收明確指定其應用程式的虛擬目錄名稱的要求;IIS 會接收所有剩餘的要求,然後可以導向至在 IIS 進程模型中執行的應用程式。
| 應用程式 | URL 預留 | 說明 | 索取收據 |
|---|---|---|---|
| 報表伺服器 | http://+:80/ReportServer | 在埠 80 上使用強式通配符,並設有報表伺服器的虛擬目錄。 | 接收埠 80 上指定報表伺服器虛擬目錄的所有要求。 報表伺服器 Web 服務會接收所有至 http://<電腦名稱>/reportserver 的要求。 |
| 報表管理員 | http://+:80/Reports | 埠 80 上的強式通配符,具有 Reports 虛擬目錄。 | 接收埠 80 上指定報告虛擬目錄的所有要求。 報表管理員會接收所有到 http://<computername>/reports 的請求。 |
| IIS | http://*:80/ | 埠 80 上的弱式通配符。 | 在埠 80 上接收其他應用程式未收到的任何剩餘要求。 |
在 IIS 6.0、7.0、8.0、8.5 上並行部署 SQL Server 2014 和 SQL Server 2005 Reporting Services
當 IIS 網站具有與 Reporting Services 所使用的虛擬目錄名稱相同的虛擬目錄名稱時,就會發生 IIS 與 Reporting Services 之間的互作性問題。 例如,假設您有下列設定:
IIS 中的網站,使用埠 80 並且有一個名為“Reports”的虛擬目錄。
默認組態中安裝的 SQL Server 2014 報表伺服器實例,其中 URL 保留區也會指定埠 80,而報表管理員應用程式也會使用 “Reports” 作為虛擬目錄名稱。
鑒於此設定,報表管理員會收到傳送至 http://< computername>:80/reports 的要求。 在安裝 SQL Server 2014 報表伺服器實例之後,透過 IIS 中的 Reports 虛擬目錄存取的應用程式將不再收到要求。
如果您執行舊版和較新版本 Reporting Services 的並存部署,您可能會遇到剛才所述的路由問題。 這是因為 Reporting Services 的所有版本都會使用 “ReportServer” 和 “Reports” 做為報表伺服器和報表管理員應用程式的虛擬目錄名稱,增加您在 IIS 中會有“reports” 和 “reportserver” 虛擬目錄的可能性。
若要確保所有應用程式都會收到要求,請遵循下列指導方針:
針對 Reporting Services 的安裝,請使用那些尚未被同埠上的任何 IIS 網站使用的虛擬目錄名稱。 如果發生衝突,請在「僅限檔案」模式中安裝 Reporting Services(在安裝精靈中選擇「安裝但不設定伺服器」選項),以便在安裝完成後設定虛擬目錄。 您的設定發生衝突的一個指示是,您會看到錯誤訊息:System.IO.FileLoadException:進程無法存取檔案,因為它正由另一個進程使用。 (HRESULT 的例外狀況:0x80070020)。
針對手動設定的安裝,請在設定的URL中採用預設命名慣例。 如果您將 SQL Server 2014 Reporting Services (SSRS) 安裝為具名實例,請在建立虛擬目錄時包含實例名稱。
另請參閱
設定報表伺服器 URL (SSRS 組態管理員)
設定 URL(SSRS 組態管理員)
安裝 Reporting Services 原生模式報表伺服器