現象
Microsoft SharePoint 2013 の blob をリモートに保存するために、ランタイム .NET Framework 4.0 と共にカスタムのリモート BLOB ストレージ (RBS) プロバイダーを使用していることを前提とします。 SqlRemoteBlobs を内部的に呼び出すガベージクリーンアップを実行しようとすると、ガベージコレクション中に次のエラーメッセージが表示されます。
メンテナンス担当者のタスクを開始する。 ガベージコレクションを開始しています。 参照スキャンを開始します。 <時刻>: ERR: 0:: assemblyload::: extension file xxxx の読み取り中にエラーが発生しました。RemoteBlobStoreProvider <Time>: ERR: 0:: assemblyload::: BadImageFormatException: このアセンブリは、現在読み込まれているランタイムよりも新しいランタイムによって構築されているため、読み込むことはできません。 (HRESULT: 0x8013101B の例外) <時刻>: ERR: 0::: assemblyload::: NLoadFile (string Path, エビデンスエビデンス) <TIME>: err.number: 0:: Assemblyload::: LoadFile (文字列 path) <time>: Err: 0::: assemblyload::: SqlRemoteBlobs:::::::::::::: ()
メンテナツールは .NET Framework 2.0 ランタイムを使ってコンパイルされ、.NET Framework 4.0 に基づくアセンブリを blob とガベージコレクションの列挙に対して読み込むことはできません。 任意の .NET Framework アプリケーションの場合は、アプリケーションの構成ファイルを使用し、新しいバージョンの .NET Framework を使うために Supportedruntime タグを追加することができます。 次の例のように、メンテナコンポーネントの構成ファイルは SqlRemoteBlobs です。 MaintainerConfig は、次のようになります。
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
ガベージクリーンアップを実行しようとすると、次のように、SqlRemoteBlobs にアクセス違反の例外が発生します。
System.object が、保護されたメモリの読み取りまたは書き込みを試みました。 これは、他のメモリが破損していることを示していることがよくあります。 IFormatProvider 形式 (プロバイダーの場合は、SqlRemoteBlobs にある文字列形式の Object [] arg)。 LogLevel のファイルについては、microsoft に保存されている () を参照してください。この情報は、microsoft データに格納されています ()。ファイルについては、「」を参照してください。 OperationType での LogLevel の指定 (ブール値の initializeProviders) については、「SqlRemoteBlobs」と入力します。この場合は、(String [] args) のように、で指定された blobStoreId の操作、level、Int32、例外例外、文字列メッセージ、Object []) を指定します。
原因
最初の例外は、メンテナツールが .NET Framework 2.0 を使ってコンパイルされているために発生します。 このツールでは、.NET Framework 4.0 に基づくアセンブリを読み込むことはできません。 SqlRemoteBlobs のログプロバイダーを初期化しようとすると、アクセス違反の例外が発生します。
解決方法
この問題を修正するには、「RBS 用の最新機能パックをダウンロードする」を参照してください。 推奨される回避策を使用している場合は、ログ関連のタグを削除または有効にして、 supportRuntime タグを保持することができます。注: 新しい RBS を使用して、更新プログラムを適用せずに修正プログラムを適用することで、RBS を再インストールできます。
MICROSOFT Sql server 2014 Service pack 1 (SP1) 機能パックのダウンロード microsoft Sql Server 2012 service PACK 3 (SP3) 機能パックをダウンロードする
回避策
この問題を回避するには、次の追加の構成を、 Supportedruntime タグと共に構成ファイルに追加します。 これらのタグは、ログプロバイダーの初期化中に例外がスローされるため、メンテナツールのログ機能を無効にします。
<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>
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。