症狀
假設您在 SharePoint 模式中安裝適用於 SharePoint 2013 的 SQL Server Reporting Services。 如果報表伺服器無法連線到 SharePoint 目錄資料庫,且 SharePoint 每日清除工作正在執行,則可能會從 Reporting Services 資料庫移除報表和資料集的快取複本。 這會導致儲存的認證遺失。
在 Reporting Services 錯誤記錄檔中,您可能會收到類似下列的錯誤訊息:
注意
錯誤:擲回 Microsoft.ReportingServices.Library.ReportServerDatabaseUnavailableException: ,Microsoft.ReportingServices.Library.ReportServerDatabaseUnavailableException:報表伺服器無法開啟報表伺服器資料庫的連線。 所有要求和處理都需要與資料庫的連線。 ---> System.Data.SqlClient.SqlException:建立與 SQL Server 的連線時,發生與網路相關的錯誤或是執行個體特有的錯誤。 找不到或無法存取伺服器。 確認實例名稱正確,且 SQL Server 已設定為允許遠端連線。 (提供者:TCP 提供者,錯誤:0 - 通常只允許每個通訊端位址 (通訊協定/網路位址/連接埠) 使用一次。) ---> System.ComponentModel.Win32Exception:通常只允許每個通訊端位址 (通訊協定/網路位址/連接埠) 使用一次
--- 已到達內部例外狀況堆疊追蹤的末尾 ---
位於 System.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
位於 System.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject, TaskCompletionSource'1 retry, DbConnectionOptions userOptions, DbConnectionInternal& 連線)
位於 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection (DbConnection owningConnection, TaskCompletionSource'1 retry, DbConnectionOptions userOptions, DbConnectionInternal& 連線)
位於 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection (DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource'1 retry, DbConnectionOptions userOptions)
位於 System.Data.SqlClient.SqlConnection.TryOpen (TaskCompletionSource'1 重試)
位於 System.Data.SqlClient.SqlConnection.Open ()
位於 Microsoft.ReportingServices.Library.ConnectionManager.OpenConnection ()
--- 內部例外狀況堆疊追蹤---結束;
資訊:無法為 URL> 建立 <SPSite: System.ServiceModel.EndpointNotFoundException: 沒有端點接聽 <URL> 可以接受訊息。 這通常是由不正確的位址或 SOAP 動作引起的。 如需詳細資訊,請參閱 InnerException (如果存在)。 ---> System.Net.WebException: 無法連線到遠端伺服器 ---> System.Net.Sockets.SocketException: 無法對通訊端執行作業,因為系統沒有足夠的緩衝區空間或因為佇列已滿 [::1]:32843
位於 System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddress SocketAddress)
位於 System.Net.ServicePoint.ConnectSocketInternal (布林值 connectFailure, Socket s4, Socket s6, Socket& Socket, IPAddress& 位址, ConnectSocketState state, IAsyncResult asyncResult, Exception& 例外狀況)
--- 已到達內部例外狀況堆疊追蹤的末尾 ---
位於 System.Net.HttpWebRequest.GetRequestStream (TransportContext&內容)
位於 System.Net.HttpWebRequest.GetRequestStream ()
位於 System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream ()
--- 已到達內部例外狀況堆疊追蹤的末尾 ---
伺服器堆疊追蹤:
位於 System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream ()
位於 System.ServiceModel.Channels.HttpOutput.Send (TimeSpan 逾時)
位於 System.ServiceModel.Channels.HttpChannelFactory'1.HttpRequestChannel.HttpChannelRequest.SendRequest (訊息訊息,TimeSpan 逾時)
位於 System.ServiceModel.Channels.RequestChannel.Request (訊息訊息,TimeSpan 逾時)
位於 System.ServiceModel.Channels.ServiceChannel.Call (字串動作、布林值 oneway、ProxyOperationRuntime 作業、Object[] ins、Object[] outs、TimeSpan 逾時)
位於 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall, ProxyOperationRuntime 作業)
位於 System.ServiceModel.Channels.ServiceChannelProxy.Invoke (IMessage 訊息)
在 [0] 重新擲回例外狀況:
位於 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg)
在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData&msgData, Int32 類型)
位於 Microsoft.IdentityModel.Protocols.WSTrust.IWSTrustContract.Issue (訊息訊息)
位於 Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel.Issue (RequestSecurityToken rst, RequestSecurityTokenResponse& rstr)
位於 Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel.Issue (RequestSecurityToken rst)
位於 Microsoft.SharePoint.SPSecurityContext.SecurityTokenForContext (Uri 內容、Boolean bearerToken、SecurityToken onBehalfOf、SecurityToken actAs、SecurityToken delegateTo、SPRequestSecurityTokenProperties 屬性)
位於 Microsoft.SharePoint.SPSecurityContext.SecurityTokenForLegacyLoginContext (Uri 內容)
位於 Microsoft.SharePoint.SPSite.InitUserToken (SPRequest 要求)
位於 Microsoft.SharePoint.SPSite.SPSiteConstructor (SPFarm 陣列, Guid applicationId, Guid contentDatabaseId, Guid siteId, Guid siteSubscriptionId, SPUrlZone zone, Uri requestUri, String serverRelativeUrl, Boolean hostHeaderIsSiteName, SPUserToken userToken, Boolean appWebRequest, String appHostHeaderRedirectDomain, String appSiteDomainPrefix, String subscriptionName, String appSiteDomainId, Uri primaryUri)
位於 Microsoft.SharePoint.SPSite.。ctor (Guid 識別碼、SPFarm 陣列、SPUrlZone 區域、SPUserToken userToken)
位於 Microsoft.ReportingServices.SharePoint.Objects.RSSharePointClassFactory.CreateSPSite (Guid 識別碼,RSSPUrlZone 區域)
位於 Microsoft.ReportingServices.SharePoint.Server.SharePointServiceHelper.GetSiteFromCatalogPath (字串 catalogPath, Int32 區域, 布林值 noThrow)
w3wp!圖書館!123!<DateTime>:: w 警告:在 SharePoint 網站中找不到目錄項目 <URL> 。 它將會從目錄中刪除。
此外,在 SharePoint ULS 記錄中,您會收到類似下列的錯誤訊息:
注意
<DateTime> w3wp.exe (0x2424) 0x12E4 SharePoint Foundation 宣告驗證 FSQ7 High SPSecurityContext: 安全性權杖要求失敗,例外狀況: System.ServiceModel.EndpointNotFoundException: 沒有端點在接聽 <URL> 可以接受訊息。 這通常是由不正確的位址或 SOAP 動作引起的。 如需詳細資訊,請參閱 InnerException (如果存在)。 ---> System.Net.WebException: 無法連線到遠端伺服器 ---> System.Net.Sockets.SocketException: 無法對通訊端執行作業,因為系統沒有足夠的緩衝區空間或因為佇列已滿 [::1]:32843
解決方式
此問題已先在下列 SQL Server 累積更新中修正:
- SQL Server 2014 SP2 累積更新 1
- SQL Server 2014 SP1 的累積更新 8
- SQL Server 2016 的累積更新 2
- SQL Server 2014 的累積更新 14
- SQL Server 2012 SP3 的累積更新 4
關於 SQL Server 的累積更新
SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。
參考資料
瞭解 Microsoft 用來說明軟體更新的 術語 。