當您維護 RBS 使用.NET Framework 4.0,SQL Server 中相關的組態檔中的修正︰ 存取違規

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:2960310
徵狀
假設您使用自訂的遠端 BLOB 儲存 (RBS) 提供者,以及執行階段的.NET Framework 4.0 來儲存從遠端的 Microsoft SharePoint 2013 blob。當您嘗試執行記憶體回收清除在內部呼叫 Microsoft.Data.SqlRemoteBlobs.Maintainer.exe 時,會在記憶體回收期間收到下列錯誤訊息︰
正在開始 Maintainer 工作。
正在啟動廢棄項目收集。
啟動參考掃描。
時間>: 錯誤︰ 0:::AssemblyLoad::: 讀取延伸檔案 xxxx 時發生錯誤。RemoteBlobStoreProvider.dll。
時間>: 錯誤︰ 0:::AssemblyLoad::: System.BadImageFormatException︰ 這個組件由比目前載入的執行階段的執行階段所建置,無法載入。(從 HRESULT 的例外狀況︰ 0x8013101B)
時間>: 錯誤︰ 0:::AssemblyLoad::: System.Reflection.Assembly.nLoadFile (字串路徑、 辨識項的辨識項) 在
時間>: 錯誤︰ 0:::AssemblyLoad::: System.Reflection.Assembly.LoadFile (字串路徑) 在時間>: 錯誤︰ 0:::AssemblyLoad::: Microsoft.Data.SqlRemoteBlobs.ProviderClass.Initialize() 在

Maintainer 工具會使用.NET Framework 2.0 的執行階段中,編譯,所以不能載入組件的列舉型別 blob 和記憶體回收的.NET Framework 4.0 為基礎的。對於任何.NET Framework 應用程式中,您可以使用應用程式的組態檔,,並新增標記,以便使用.NET Framework 最新版本。Maintainer 元件的組態檔是 Microsoft.Data.SqlRemoteBlobs.MaintainerConfig.xml,如下列範例所示︰
<startup>            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
如果您嘗試執行記憶體回收清除,Microsoft.Data.SqlRemoteBlobs.Maintainer.exe 遇到存取違規例外狀況,如下所示︰
System.AccessViolationException︰ 嘗試讀取或寫入受保護的記憶體。這通常是表示其他記憶體已損毀。
在 System.Text.StringBuilder.AppendFormat (IFormatProvider 提供者、 字串格式,物件的 [] 引數)
在 Microsoft.Data.SqlRemoteBlobs.InformationUtilities.InformationDetails()
在 Microsoft.Data.BlobStores.LogProvider.CreateHeaderInformation()
在 Microsoft.Data.BlobStores.LogProvider.Initialize (LogLevel logLevel)
在 Microsoft.Data.BlobStores.DebugPrint.InitializeProviders()
在 Microsoft.Data.BlobStores.DebugPrint.Initialize (布林 initializeProviders)
在 Microsoft.Data.BlobStores.DebugPrint.WriteLine (OperationType 作業、 LogLevel 層級、 Int32 blobStoreId、 例外狀況的例外狀況、 字串訊息、 物件 [] 引數)
在 Microsoft.Data.SqlRemoteBlobs.Maintainer.Maintainer.MainInternal() 在 Microsoft.Data.SqlRemoteBlobs.Maintainer.Maintainer.Main (字串 [] 引數)
發生的原因
Maintainer 工具會使用.NET Framework 2.0 編譯,就會發生的第一個例外狀況。工具無法載入組件,.NET Framework 的 4.0 為基礎的。當您嘗試初始化 Microsoft.Data.SqlRemoteBlobs.Maintainer.exe 的記錄提供者時,就會發生存取違規例外狀況。
解決方案
使用 RBS.msi 的最新功能套件下載中的修正這個問題。如果您有使用建議的因應措施,您可以移除,或啟用記錄相關標記,並會持續supportRuntime標記。

附註您可以使用新的 RBS.msi,而不需要套用更新程式套用修正程式,以重新安裝 RBS。
其他可行方案
要解決這個問題,請加入組態檔,加上標記中的下列額外的設定。這些標籤停用記錄功能,Maintainer 工具,因為記錄提供者的初始化期間,所擲回例外狀況。
 <startup>            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup>     <RemoteBlobStorage>        <Logging>            <add key="ConsoleLog" value="0" />            <add key="FileLog" value="0" />            <add key="CircularLog" value="0" />            <add key="EventViewerLog" value="0" />            <add key="DatabaseTableLog" value="0" />        </Logging>    </RemoteBlobStorage>
狀況說明
Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。

警告:本文為自動翻譯

內容

文章識別碼:2960310 - 最後檢閱時間:11/10/2016 01:06:00 - 修訂: 8.0

Microsoft SQL Server 2012 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2012 Service Pack 2

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2960310 KbMtzh
意見反應