Příznaky
Předpokládejme, že používáte vlastní poskytovatele vzdáleného úložiště objektů (RBS) společně s běhovým rozhraním .NET Framework 4,0 pro ukládání objektů BLOB vzdáleně pro Microsoft SharePoint 2013. Když se pokusíte spustit čištění paměti, které interně volá Microsoft. data. SqlRemoteBlobs. Maintainer. exe, zobrazí se při uvolňování paměti následující chybová zpráva:
Zahájení úkolů údržby Spouští se uvolňování paměti. Spouští se referenční kontrola. <čas>: Err: 0::: AssemblyLoad::: došlo k chybě při čtení souboru rozšíření xxxx. RemoteBlobStoreProvider. dll. <čas>: Err: 0::: AssemblyLoad::: System. BadImageFormatException: Toto sestavení je vytvořeno modulem runtime, který je novější než aktuálně zavedený modul runtime, a nelze ho načíst. (Výjimka HRESULT: 0x8013101B) <Time>: Err: 0::: AssemblyLoad::: on System. Reflection. Assembly. nLoadFile (cesta k řetězci, legitimace legitimace) <čas>: Err: 0::: AssemblyLoad:: (Path. Reflection. Assembly. LoadFile (cesta řetězce) <čas>: Err: 0::: AssemblyLoad::: on Microsoft. data. SqlRemoteBlobs. ProviderClass. Initialize ()
Nástroj Maintainer je kompilován pomocí .NET Framework 2,0 Runtime a nemůže načíst sestavení, která jsou založená na rozhraní .NET Framework 4,0 pro výčet objektů BLOB a uvolňování paměti. V případě libovolné aplikace rozhraní .NET Framework můžete použít konfigurační soubor aplikace a přidat značku supportedRuntime pro použití novější verze rozhraní .NET Framework. Konfigurační soubor komponenty Maintainer 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 uvolňování paměti, Microsoft. data. SqlRemoteBlobs. Maintainer. exe narazí na výjimku narušení přístupu:
System. AccessViolationException: pokusit se o čtení nebo zápis chráněné paměti. Často je to náznak, že je poškozená jiná paměť. v System. text. StringBuilder. AppendFormat (poskytovatel IFormatProvider, formát řetězce, objekt [] args) na Microsoft. data. SqlRemoteBlobs. InformationUtilities. InformationDetails () na Microsoft. data. BlobStores. LogProvider. CreateHeaderInformation (v systému Microsoft. data. BlobStores. LogProvider. BlobStores. DebugPrint. Initialize (Boolean initializeProviders) v Microsoft. data. BlobStores. DebugPrint. WriteLine (OperationType operace, LogLevel Level, Int32 blobStoreId, Exception Exception, String Message, String [] ARG) v Microsoft. data. SqlRemoteBlobs. Maintainer. "()
Příčina
K první výjimce dochází, protože nástroj Maintainer je kompilován pomocí rozhraní .NET Framework 2,0. Nástroj nemůže načíst sestavení založená na rozhraní .NET Framework 4,0. K výjimce narušení přístupu dojde při pokusu o inicializaci zprostředkovatelů protokolování pro Microsoft. data. SqlRemoteBlobs. Maintainer. exe.
Řešení
Oprava tohoto problému je k dispozici v nejnovějším balíčku Feature Pack pro kód RBS. msi. Pokud používáte alternativní řešení, které se navrhuje, můžete značky související s protokolováním odebrat nebo povolit a zůstane značka supportRuntime .Poznámka KÓD RBS můžete znovu nainstalovat pomocí nového kódu RBS. msi, abyste opravu použili bez aktualizace.
Stažení balíčku Feature Pack pro Microsoft SQL server 2014 Service Pack 1 (SP1) Stáhnout balíček microsoft SQL Server 2012 Service Pack 3 (SP3) Feature Pack
Alternativní řešení
Tento problém vyřešíte tak, že do konfiguračního souboru přidáte následující další konfiguraci společně se značkou supportedRuntime . Tyto značky zakazují schopnost protokolování pro nástroj Maintainer, protože se během inicializace zprostředkovatelů protokolování vyjímka vyvolá.
<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 potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.