疑難排解擴充保護 (Reporting Services)
使用本主題,即可針對使用 SQL Server 2008 R2 Reporting Services 擴充保護時遇到的問題進行疑難排解。當您在排除一般驗證問題,了解這類問題是否為擴充保護組態問題的根本原因時,本主題的資訊也會非常實用。 如需有關最近開發之擴充保護的詳細資訊,請參閱擴充保護的更新資訊 (英文)。
Common issues and support scenarios
Error messages
Error states
常見問題和支援案例
我要如何檢查目前的擴充保護設定?
RSWindowsExtendedProtectionLevel 和 RSWindowsExtendedProtectionScenario 設定會儲存在 rsreportserver.config 檔案中。如需有關組態設定的詳細資訊,請參閱<含有 Reporting Services 之驗證的擴充保護>。
使用 WMI API。如需詳細資訊,請參閱<SetExtendedProtectionSettings 方法 (WMI MSReportServer_ConfigurationSetting)>。
reportserverservice 追蹤記錄檔將會包含指出目前設定的項目。當啟動報表伺服器服務時,將會寫入追蹤記錄項目。這些項目看起來與下列文字類似:
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 用戶端應用程式可以連接。若要停用擴充保護:
在 RSReportServer.config 檔案中將 RSWindowsExtendedProtectionLevel 設定為 Off。
重新啟動報表伺服器服務。
解決方案是下載所有 .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 設定遺漏或無效 |
錯誤 |
|
|
當 ExtendedProtectionScenario 設定為 Direct 時,報表伺服器連接上需要 SSL |
錯誤 |
|
|
與報表伺服器之間的 HTTP 流量將不會通過 NTLM、Kerberos、交涉驗證 |
警告 |
|
|
當 ExtendedProtectionScenario 設定為 Direct 時,報表管理員連接上需要 SSL |
錯誤 |
|
|
與報表伺服器之間的直接連接將不會通過 NTLM、Kerberos、交涉驗證 |
警告 |
|
|
與報表管理員之間的 HTTP 流量可能不會通過 NTLM、Kerberos、交涉驗證 |
警告 |
|
|
錯誤狀態
本節包含錯誤碼的名稱和描述,您可能會在與擴充保護相關的報表伺服器服務追蹤記錄檔中看到這些項目。如需詳細資訊,請參閱<報表伺服器服務追蹤記錄>。
代碼 |
錯誤狀態名稱 |
描述 |
---|---|---|
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 錯誤碼表示失敗的原因。 |