OPRAVA: Narušení přístupu při zachování RBS 4.0 rozhraní.NET Framework související konfiguračního souboru serveru SQL Server

Příznaky

Předpokládejme, že pro uložení objektů BLOB vzdáleně pro Microsoft SharePoint 2013 používáte vlastní zprostředkovatele vzdáleného úložiště objektů BLOB (RBS) a modul Runtime rozhraní.NET Framework 4.0. Při pokusu spustit vyčištění odpadků, která interně volá Microsoft.Data.SqlRemoteBlobs.Maintainer.exe, zobrazí se následující chybová zpráva během uvolňování paměti:
Spuštění funkce Maintainer úkoly.
Spuštění procesu uvolnění paměti.
Spuštění skenování odkaz.
<Čas>: ERR: 0:::AssemblyLoad::: došlo k chybě při čtení xxxx přípony souboru. RemoteBlobStoreProvider.dll.
<Čas>: ERR: 0:::AssemblyLoad::: System.BadImageFormatException: Toto sestavení je sestavena novější než aktuálně načtený modul runtime runtime a nelze načíst. (Výjimky z HRESULT: 0x8013101B)
<Čas>: ERR: 0:::AssemblyLoad::: v System.Reflection.Assembly.nLoadFile (řetězec cesty, důkaz důkaz)
<Čas>: ERR: 0:::AssemblyLoad::: na System.Reflection.Assembly.LoadFile(String path) <čas>: ERR: 0:::AssemblyLoad::: na Microsoft.Data.SqlRemoteBlobs.ProviderClass.Initialize()

Funkce Maintainer nástroj je kompilována pomocí modulu runtime rozhraní.NET Framework 2.0 a načtení sestavení, které jsou založeny na 4.0 pro výčet objektů BLOB a uvolňování paměti v rozhraní.NET Framework. Pro všechny aplikace rozhraní.NET Framework můžete použít konfigurační soubor aplikace a přidat značku supportedRuntime použít novější verzi rozhraní.NET Framework. Funkce Maintainer součásti konfigurační soubor je Microsoft.Data.SqlRemoteBlobs.MaintainerConfig.xml, jako v následujícím příkladu:
<startup>            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
Pokud se pokusíte spustit vyčištění odpadků, Microsoft.Data.SqlRemoteBlobs.Maintainer.exe narazí výjimku narušení přístupu takto:
System.AccessViolationException: Pokusu o čtení nebo zápis chráněné paměti. To je často údajem, že ostatní paměti je poškozen.
v System.Text.StringBuilder.AppendFormat (IFormatProvider zprostředkovatele, řetězec formátu, objektu args [])
v Microsoft.Data.SqlRemoteBlobs.InformationUtilities.InformationDetails()
v Microsoft.Data.BlobStores.LogProvider.CreateHeaderInformation()
v Microsoft.Data.BlobStores.LogProvider.Initialize (LogLevel logLevel)
v Microsoft.Data.BlobStores.DebugPrint.InitializeProviders()
v Microsoft.Data.BlobStores.DebugPrint.Initialize (Boolean initializeProviders)
v Microsoft.Data.BlobStores.DebugPrint.WriteLine (typ operace operace, úroveň LogLevel, Int32 blobStoreId, výjimky výjimka, řetězce zprávy, objekt [] arg)
na Microsoft.Data.SqlRemoteBlobs.Maintainer.Maintainer.MainInternal() na Microsoft.Data.SqlRemoteBlobs.Maintainer.Maintainer.Main (String [] args)

Příčina

První výjimka dochází, protože funkce Maintainer nástroj je kompilována pomocí rozhraní rozhraní.NET Framework 2.0. Nástroj nemůže načíst sestavení, které jsou založeny na 4.0 rozhraní.NET Framework. Při pokusu o inicializaci zprostředkovatele protokolování pro Microsoft.Data.SqlRemoteBlobs.Maintainer.exe, dojde k výjimce narušení přístupu.

Řešení

Oprava tohoto problému je k dispozici v stažení nejnovější funkce pack pro RBS.msi. Pokud použijete toto zástupné řešení, která je navržena, můžete odebrat nebo povolit protokolování související tagy a zachová značku supportRuntime .

Poznámka: Kód RBS můžete přeinstalovat pomocí nového RBS.msi Chcete-li použít tuto opravu bez použití aktualizace.

Jak potíže obejít

Chcete-li tento problém vyřešit, přidejte následující dodatečná konfigurace do konfiguračního souboru spolu se značkou supportedRuntime . Tyto značky zakázat funkce protokolování pro Funkce Maintainer nástroj, protože je právě vyvolána výjimka při inicializaci zprostředkovatele protokolování.
 <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>

Stav

Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".
Vlastnosti

ID článku: 2960310 - Poslední kontrola: 9. 1. 2017 - Revize: 1

Váš názor