疑難排解擴充保護 (Reporting Services)

使用本主題,即可針對使用 SQL Server 2008 R2 Reporting Services 擴充保護時遇到的問題進行疑難排解。當您在排除一般驗證問題,了解這類問題是否為擴充保護組態問題的根本原因時,本主題的資訊也會非常實用。 如需有關最近開發之擴充保護的詳細資訊,請參閱擴充保護的更新資訊 (英文)。

Common issues and support scenarios

Error messages

Error states

常見問題和支援案例

我要如何檢查目前的擴充保護設定?

library!DefaultDomain!698!12/29/2009-10:14:49:: i INFO: 將 RSWindowsExtendedProtectionLevel 初始化成 'Off',如同組態檔中所指定。

library!DefaultDomain!698!12/29/2009-10:14:49:: i INFO: 將 RSWindowsExtendedProtectionScenario 初始化成 'Proxy',如同組態檔中所指定。

我要如何知道擴充保護造成驗證失敗?

報表伺服器的服務追蹤記錄檔將會包含類似以下的項目:

http!rshost!ec0!12/29/2009-11:01:37:: i INFO: 驗證失敗,錯誤狀態: 46

在本主題結尾的error states清單中尋找錯誤狀態號碼和其他資訊。

我要如何驗證擴充保護檢查正在執行中?

更新 reportingservicesservice.exe.config 組態檔來啟用詳細資訊記錄。在 <RStrace> 區段組中:

<add name=”Components” value=”all:4” /> 
  • 重新啟動服務。

  • 當啟用詳細資訊記錄時,驗證將會寫入類似下面的字行,指出正在執行通道繫結、服務繫結或這兩者的驗證:

http!rshost!ec0!12/29/2009-11:01:37:: v VERBOSE: 正在執行通道繫結檢查當做 Proxy。

http!rshost!7b0!12/29/2009-11:26:23:: v VERBOSE: 正在執行服務繫結檢查。

如需詳細資訊,請參閱<ReportingServicesService 組態檔>。

報表伺服器目錄

Microsoft SQL 用戶端尚未更新,無法在 SQL Server 2008 R2 發行時支援擴充保護。SQL 用戶端用來連接 SQL Server 資料來源與 Reporting Services 目錄資料庫。SQL 用戶端中的這項限制會以下列方式影響 Reporting Services:

  • 執行 Reporting Services 目錄資料庫的 SQL Server 不能啟用擴充功能,否則報表伺服器將無法連接至目錄資料庫,並傳回驗證錯誤。

  • 當做 Reporting Services 報表資料來源使用的所有 SQL Server 無法啟用擴充保護,否則報表伺服器為連接報表資料來源所做的嘗試將會失敗,並傳回驗證錯誤。可能的因應方式是變更 Reporting Services 資料來源以使用原生提供者,而非 SQL 用戶端。例如,設定 ODBC 驅動程式的資料來源,然後使用 SQL Native Client,因為它會支援擴充保護。

當我啟用擴充保護但是未設定 SSL 時會發生什麼事?

此行為取決於 rsreportserver.config 組態檔中的 RSWindowsExtendedProtectionScenario 設定。

如果 RSWindowsExtendedProtectionScenario 設定為 Direct 而且遺漏 SSL

當 RSWindowsExtendedProtectionScenario 為 Direct 而且沒有報表伺服器或報表管理員的 SSL URL 保留項目時,檢視報表伺服器或報表管理員之使用者的一般經驗會是查看空的報表管理員視窗。

這是因為當遺漏 SSL 而且 RSWindowsExtendedProtectionScenario 設定為 Direct 時,報表伺服器會停用驗證類型 <RSWindowsNTLM />、<RSWindowsNegotiate /> 和 <RSWindowsKerberos />。因此,不會啟用任何驗證類型,而且報表伺服器將不會回應要求。這樣會產生空的視窗。

追蹤記錄檔將會包含類似下面的錯誤訊息:

configmanager!DefaultDomain!938!12/29/2009-11:39:39:: e ERROR: 當 ExtendedProtectionScenario 設定為 Direct 時,報表伺服器連接上需要 SSL

configmanager!DefaultDomain!938!12/29/2009-11:39:39:: e ERROR: 當 ExtendedProtectionScenario 設定為 Direct 時,報表管理員連接上需要 SSL

如果 RSWindowsExtendedProtectionScenario 設定為 Proxy 而且遺漏 SSL

當 RSWindowsExtendedProtectionScenario 設定為 Proxy 而且 SSL 不是環境的一部分時,檢視報表伺服器或報表管理員之使用者的一般經驗會是查看認證提示頁面,這個頁面絕對不會驗證成功。如果在報表伺服器上設定 SSL,將報表伺服器或報表管理員的瀏覽器中使用的 URL 加上 's' 將會解決問題。例如,https://<uri> 將會解決出現驗證對話方塊的問題 (如果這個問題是因為 RSWindowsExtendedProtectionSscenario 設定為 proxy)。

報表伺服器的追蹤記錄檔將會包含類似下面的訊息:

http!rshost!ec0!12/29/2009-11:01:37:: i INFO: 正在執行通道繫結檢查當做 Proxy

http!rshost!76c!12/29/2009-10:26:12:: i INFO: 驗證失敗,錯誤狀態: 45

http!rshost!ec0!12/29/2009-11:01:37:: i INFO: 正在執行通道繫結檢查當做 Proxy

http!rshost!ec0!12/29/2009-11:01:37:: i INFO: 驗證失敗,錯誤狀態: 46

當啟用擴充保護之後,我可以在 Internet Explorer 中連接,但是無法使用報表產生器、Management Studio 或任何 .NET 用戶端連接

這個情況只適用於 Windows 7 和 Windows 2008 R2 之前的作業系統。舊版的 Windows 一開始發行時並未包含擴充保護功能,因此擁有舊版作業系統的電腦可能不會擁有所有擴充保護更新,包括 .NET framework 的擴充保護更新。

當 RSWindowsExtendedProtectionLevel 為 Allow 或 Require 時,在支援擴充保護之作業系統上執行的用戶端應用程式必須提供通道繫結,有時也必須提供服務繫結。在此範例中:

  • Internet Explorer 在 Windows 擴充保護更新中針對擴充保護進行更新。

  • 但是,尚未修補 .NET Framework。類似報表產生器和 Management Studio 的 .NET 用戶端需要 .NET framework。

若要診斷這個問題,請停用擴充保護,並確認 .NET 用戶端應用程式可以連接。若要停用擴充保護:

  1. 在 RSReportServer.config 檔案中將 RSWindowsExtendedProtectionLevel 設定為 Off。

  2. 重新啟動報表伺服器服務。

解決方案是下載所有 .NET Framework 更新。

為什麼本機連接在啟用擴充保護時通過驗證,但遠端連接卻失敗?

當執行回送驗證時,作業系統會略過驗證機制,而且不會強制使用通道繫結。

因此,當使用 HTTP 連接及以下的組態設定時:

  • RSWindowsExtendedProtectionLevel 設定為 Require

    而且

  • RSWindowsExtendedProtectionScenario 設定為 Proxy

本機連接會成功,但是遠端連接會失敗。

根據用來進行本機連接的 URL 以及報表伺服器上設定的 URL 保留項目而定,本機連接仍然有可能因為服務繫結失敗而失敗,因為從 URL 保留項目建立的 SPN 可能不會符合有效 SPN 清單中的 SPN。

如果您進行 HTTP 連接,而且在設定為建立 SSL 連接的用戶端與報表伺服器之間沒有閘道,遠端連接一定會失敗。

使用主機標頭時發生 401 未經授權的錯誤

這個情況專屬於 Reporting Services 的向外延展部署,當報表管理員和報表伺服器在同一部電腦上而且兩者都使用主機標頭和 Windows 驗證時,將會發生這個情況。例如,如果您嘗試在 http://<thename>/reports 上存取報表管理員,您不會如預期般看到報表和資料夾的清單,但是會收到「HTTP 401 (未經授權)」錯誤訊息。

參考 <thename> 不是電腦的實體名稱,而且被視為「主機標頭」。它是安裝 Reporting Services 之電腦的替代名稱。當 Reporting Services 針對擴充保護計算有效的 SPN 清單時,主機標頭也會當做有效 SPN 的一個來源使用。

若要避免 401 未經授權錯誤,您需要將 <thename> 的 NetBIOS 和完整網域名稱 (FQDN) 加入至 Windows 登錄內儲存的 BackConnectionHostNames 清單。進行登錄變更之後,重新開機。

如需有關如何進行登錄變更的詳細資訊,請參閱 Microsoft 知識庫文件 896861 當您瀏覽的網站使用整合式驗證而且在 IIS 5.1 或更新版本上主控時,您會收到錯誤 401.1 中的<方法 2:指定主機名稱>一節 (機器翻譯)。

錯誤訊息

下列訊息清單可能會在報表伺服器的服務追蹤記錄檔中看到。

錯誤訊息

類型

原因

疑難排解步驟

ExtendedProtectionScenario 設定遺漏或無效

錯誤

  • RSWindowsExtendedProtectionScenario 不在 rsreportserver.config 檔案中。

  • 將組態檔更新為預設值。

  • RSWindowsExtendedProtectionLevel 設定的預設值為 Off。

  • RSWindowsExtendedProtectionScenario 設定的預設值為 Proxy。

當 ExtendedProtectionScenario 設定為 Direct 時,報表伺服器連接上需要 SSL

錯誤

  • RSWindowsExtendedProtectionScenario 設定為 Direct。

  • Direct 選項需要 SSL 連接。

  • 針對報表伺服器和報表管理員取得 SSL 憑證及設定 SSL URL。在 SharePoint 整合模式下使用 Reporting Services 時,也需要針對 SharePoint 管理中心執行相同的作業。

  • 將 RSWindowsExtendedProtectionLevel 設定為 Off,直到取得及設定 SSL 憑證為止。

  • 如果不會設定 SSL 憑證,而仍然需要某些保護時,請將 RSWindowsExtendedProtectionScenario 設定為 Any。

與報表伺服器之間的 HTTP 流量將不會通過 NTLM、Kerberos、交涉驗證

警告

  • RSWindowsExtendedProtectionScenario 設定為 Direct。

  • Direct 需要 SSL。

  • 設定 HTTP URl 保留項目。這個 URL 保留項目的驗證將會失敗。

  • 使用 HTTPS 與報表伺服器通訊。

  • 使用 Reporting Services 組態管理員移除 HTTP URL 保留項目。

當 ExtendedProtectionScenario 設定為 Direct 時,報表管理員連接上需要 SSL

錯誤

  • RSWindowsExtendedProtectionScenario 設定為 Direct。

  • Direct 需要 SSL。

  • 報表管理員未設定 SSL URl。

  • 針對報表伺服器和報表管理員取得 SSL 憑證及設定 SSL URL。在 SharePoint 整合模式下使用 Reporting Services 時,也需要針對 SharePoint 管理中心執行相同的作業。

  • 將 RSWindowsExtendedProtectionLevel 設定為 Off,直到取得及設定 SSL 憑證為止。

  • 如果不會設定 SSL 憑證,而仍然需要某些保護時,請將 RSWindowsExtendedProtectionScenario 設定為 Any。

與報表伺服器之間的直接連接將不會通過 NTLM、Kerberos、交涉驗證

警告

  • RSWindowsExtendedProtectionScenario 是 Proxy,不會針對報表管理員設定 SSL URl。

  • 使用這個方式設定時,使用者必須透過與 PROXY 之間的 SSL 通道來進行連接。Proxy 裝置可以結束連接。如果在沒有 SSL 通道之下進行與 SSRS 伺服器之間的直接連接,驗證將會失敗。

  • 確認用戶端只使用 HTTPS。

  • 確認已經設定 Proxy (其中設定了 SSL 終止)。

  • 確認所有電腦 (不論是本機或遠端) 都設定為將 Proxy 用於報表伺服器和報表管理員的連接。這可能需要 DNS 更新、瀏覽器 Proxy 更新,或是本機電腦的自訂 HOSTS 檔案項目。

  • 在 SharePoint 整合模式下使用 Reporting Services 時,於 Reporting Services 伺服器上針對報表伺服器和報表管理員或 SharePoint 管理中心設定 SSL URL。 所有本機連接都必須使用 SSL URL。 這樣會假設沒有任何 Proxy 有設定終止。

  • 將報表管理員 URL 明確設定為使用具有 SSL 的 Proxy URL。

與報表管理員之間的 HTTP 流量可能不會通過 NTLM、Kerberos、交涉驗證

警告

  • ExtendedProtectionScenario 設定為 Proxy 而且已針對報表管理員設定 SSL URl。

  • 當以這個方式設定時,透過 Proxy 存取的使用者應該會驗證成功,即使從 Proxy 到報表管理員之間的連接不是透過 SSL 通道,也是如此。

  • 與報表管理員之間的本機連接必須使用 SSL。

  • 確認用戶端只使用 HTTPS (SSL 通道)。

  • 確認已經設定 Proxy (其中設定了 SSL 終止)。

  • 確認所有電腦 (不論是本機或遠端) 都設定為將 Proxy 用於報表伺服器和報表管理員的連接。這可能需要 DNS 更新、瀏覽器 Proxy 更新,或是本機電腦的自訂 HOSTS 檔案項目。

  • 針對報表伺服器和報表管理員,於 Reporting Services 伺服器上設定 SSL URL。所有本機連接都必須使用 SSL URL。這樣會假設沒有任何 Proxy 有設定終止。

  • 將報表管理員 URL 明確設定為使用具有 SSL 的 Proxy URL。

錯誤狀態

本節包含錯誤碼的名稱和描述,您可能會在與擴充保護相關的報表伺服器服務追蹤記錄檔中看到這些項目。如需詳細資訊,請參閱<報表伺服器服務追蹤記錄>。

代碼

錯誤狀態名稱

描述

44

SNIAUTH_ERRST_SSPIHANDSHAKE_CHANNELBINDINGS_NOTSUPPORTED

作業系統不支援通道繫結,但是報表伺服器設定為需要擴充保護。請更新作業系統或停用擴充保護。

45

SNIAUTH_ERRST_SSPIHANDSHAKE_CHANNELBINDINGS_EMPTYORWRONG

來自用戶端的通道繫結不符合建立的傳輸層安全性通道。此服務可能受到攻擊,或者資料提供者可能需要升級,才能支援擴充保護。此連接已經關閉。

46

SNIAUTH_ERRST_SSPIHANDSHAKE_CHANNELBINDINGS_NULLOREMPTYORWRONG

來自這個用戶端的通道繫結遺失,或者不符合建立的傳輸層安全性通道。此服務可能受到攻擊,或者資料提供者或用戶端作業系統可能需要升級,才能支援擴充保護。此連接已經關閉。

48

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_UNSUPPORTED

作業系統不支援服務繫結,但是伺服器設定為需要擴充保護。請更新作業系統或停用擴充保護。

49

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_QUERYCONTEXTATTRIBUTES

QueryContextAttributes 無法擷取服務繫結。Windows 錯誤碼表示失敗的原因。

51

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_NULL

伺服器的擴充保護層級設定為 [允許] 或 [必要],而且用戶端並未提供服務主要名稱 (SPN)。若要連接,這個用戶端必須支援擴充保護。您可能必須安裝允許服務繫結和通道繫結的作業系統 Service Pack。

52

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_EMPTY

伺服器的擴充保護層級設定為 [允許] 或 [必要],而且用戶端並未提供 SPN。若要連接,這個用戶端必須支援擴充保護。

53

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_SERVICECLASSMISMATCH

收到之 SPN 的服務類別元素無效。

54

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_IPADDRESSMISMATCH

收到之 SPN 的 IP 位址元素無效。

55

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_HOSTNAMEMISMATCH

收到之 SPN 的主機元素無效。

56

SNIAUTH_ERRST_SSPIHANDSHAKE_OOM

驗證收到的 SPN 時,記憶體配置失敗。

57

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_WSASTRINGTOADDRESSFAILEDFORIPV6

WSAStringToAddress 無法將收到之 SPN 的 IP 位址元素轉換成位址結構。Windows 錯誤碼表示失敗的原因。