Príznaky
Predpokladajme, že používate vlastný poskytovateľ vzdialeného ukladacieho priestoru BLOB (RBS) spolu s modulom runtime .NET Framework 4,0 na vzdialenú ukladanie blobov pre Microsoft SharePoint 2013. Pri pokuse o spustenie čistenia odpadkov, ktoré interne zavolá Microsoft. Data. SqlRemoteBlobs. deleted. exe, sa počas zberu odpadkov zobrazí nasledujúce chybové hlásenie:
Spustenie úloh údržby. Spúšťa sa kolekcia odpadkov. Spustí sa vyhľadávanie odkazov. <čas>: Err: 0::: AssemblyLoad::: pri čítaní súboru prípony xxxx sa vyskytla chyba. RemoteBlobStoreProvider. dll. <Time>: Err: 0::: AssemblyLoad::: System. BadImageFormatException: Táto zostava je postavená v režime runtime, ktorý je novší než aktuálne načítaný modul runtime a nie je možné ho načítať. (Výnimka z HRESULT: 0x8013101B) <času>: Err: 0::: AssemblyLoad::: at System. Reflection. Assembly. nLoadFile (cesta k reťazcom, dôkazné materiály) <čas>: Err: 0::: AssemblyLoad::: at System. Reflection. Assembly. LoadFile (cesta k reťazcu) <čas>: Err: 0::: AssemblyLoad::: v Microsoft. Data. SqlRemoteBlobs. ProviderClass
Nástroj Správca je zostavený pomocou rozhrania .NET Framework 2,0 Runtime a nie je možné načítať zostavy, ktoré sú založené na rozhraní .NET Framework 4,0 na výpočet počtu objektov blob a Garbage Collection. Pre ľubovoľnú aplikáciu rozhrania .NET Framework môžete použiť konfiguračný súbor aplikácie a pridať značku supportedRuntime , aby ste mohli použiť novšiu verziu rozhrania .NET Framework. Konfiguračný súbor súčasti údržby je Microsoft. Data. SqlRemoteBlobs. MaintainerConfig. XML, ako je to uvedené v nasledujúcom príklade:
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
Ak sa pokúsite spustiť vyčistenie odpadkov, Microsoft. Data. SqlRemoteBlobs. CleanUp. exe zistí výnimku z porušenia prístupu, a to takto:
System. AccessViolationException: pokúsil sa čítať alebo zapisovať chránenú pamäť. Toto je často označenie, že iná pamäť je poškodená. na System. text. StringBuilder. AppendFormat (IFormatProvider Provider; string Format; Object [] argumenty) na lokalite Microsoft. Data. SqlRemoteBlobs. InformationUtilities. InformationDetails () na lokalite Microsoft. Data. BlobStores. LogProvider. CreateHeaderInformation () na lokalite Microsoft. Data. BlobStores. LogProvider () na lokalite Microsoft. Data. loglevel. loglevel (). BlobStores. DebugPrint. inicializovať (Boolovská hodnota initializeProviders) na lokalite Microsoft. Data. BlobStores. DebugPrint. WriteLine (OperationType operácia, LogLevel Level, Int32 blobStoreId, výnimka výnimka, reťazec správy, objekt [] ARG) na lokalite Microsoft. Data. SqlRemoteBlobs. de. de. MainInternal () na lokalite Microsoft. Data. SqlRemoteBlobs. de.
Príčina
Prvá výnimka sa vyskytuje, pretože nástroj Správca je zostavený pomocou rozhrania .NET Framework 2,0. Nástroj nedokáže načítať zostavy, ktoré sú založené na rozhraní .NET Framework 4,0. Výnimka porušenia prístupu sa vyskytuje pri pokuse o inicializáciu poskytovateľov zapisovania do denníka pre Microsoft. Data. SqlRemoteBlobs. správca. exe.
Riešenie
Oprava tohto problému je k dispozícii v najnovšom stiahnutí balíka funkcií pre RBS. msi. Ak máte použiť alternatívne riešenie, ktoré je navrhnuté, môžete odstrániť alebo zapnúť značky súvisiace s zapisovaním a zachová značku supportRuntime .Poznámka: RBS môžete znova nainštalovať pomocou nového nástroja RBS. msi na použitie opravy bez použitia aktualizácie.
Stiahnuť balík funkcií Microsoft SQL server 2014 Service Pack 1 (SP1) Stiahnite si balík funkcií microsoft SQL Server 2012 Service Pack 3 (SP3)
Alternatívne riešenie
Ak chcete obísť tento problém, pridajte do konfiguračného súboru túto ďalšiu konfiguráciu spolu so značkou supportedRuntime . Tieto značky zakážu možnosť zapisovania do denníka pre nástroj na údržbu, pretože pri inicializácii poskytovateľov zapisovania do denníka sa výnimka hodila.
<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
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.