Simptome
Să presupunem că utilizați un furnizor de stocare BLOB personalizat la distanță (RBS) împreună cu Runtime .NET Framework 4,0 pentru a stoca Blobs la distanță pentru Microsoft SharePoint 2013. Atunci când încercați să difuzați curățarea deșeurilor care apelează intern Microsoft. data. SqlRemoteBlobs. Maintainer. exe, primiți următorul mesaj de eroare în timpul colecției de deșeuri:
Pornirea activităților de întreținere. Se pornește colecția de deșeuri. Începeți scanarea de referință. <ora>: err: 0::: AssemblyLoad::: a apărut o eroare în timp ce se citea extensia XXXX. RemoteBlobStoreProvider. dll. <Time>: err: 0::: AssemblyLoad::: System. BadImageFormatException: această asamblare este construită de o rulare mai nouă decât execuția încărcată în prezent și nu poate fi încărcată. (Excepție de la HRESULT: 0x8013101B) <dată>: err: 0::: AssemblyLoad::: la System. Reflexion. Assembly. nLoadFile (cale șir, dovezi dovezi) <de timp>: err: 0 ::: AssemblyLoad::: de la Microsoft. data> <. SqlRemoteBlobs. ProviderClass. Initialize ()....
Instrumentul de întreținere este compilat utilizând .NET Framework 2,0 Runtime și nu poate încărca ansambluri care se bazează pe .NET Framework 4,0 pentru enumerarea blobs și a colecției de deșeuri. Pentru orice aplicație .NET Framework, puteți să utilizați fișierul de configurare al aplicației și să adăugați eticheta supportedRuntime pentru a utiliza versiunea ulterioară a .NET Framework. Fișierul de configurare al componentei maintainer este Microsoft. data. SqlRemoteBlobs. MaintainerConfig. XML, ca în exemplul următor:
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
Dacă încercați să difuzați curățarea deșeurilor, Microsoft. data. SqlRemoteBlobs. Maintainer. exe întâlnește o excepție de violare a accesului, după cum urmează:
System. AccessViolationException: s-a încercat citirea sau scrierea memoriei protejate. Acesta este deseori un indiciu că cealaltă memorie este deteriorată. la System. text. StringBuilder. AppendFormat (IFormatProvider Provider, String format, Object [] args) la Microsoft. data. SqlRemoteBlobs. InformationUtilities. InformationDetails () la Microsoft. data. BlobStores. LogProvider. CreateHeaderInformation () la Microsoft. data. BlobStores. LogProvider. Initialize (LogLevel logLevel) la Microsoft. data. BlobStores. DebugPrint. InitializeProviders () la Microsoft. data. BlobStores. DebugPrint. Initialize (Boolean initializeProviders) la Microsoft. data. BlobStores. DebugPrint. WriteLine (OperationType operațiunea, LogLevel level, Int32 blobStoreId, excepție, mesaj șir, obiect [] ARG) la Microsoft. data. SqlRemoteBlobs. Maintainer. Maintainer. MainInternal () la Microsoft. data. SqlRemoteBlobs. Maintainer. Maintainer. Main (string [] args)
Cauză
Prima excepție apare deoarece instrumentul de întreținere este compilat utilizând .NET Framework 2,0. Instrumentul nu poate încărca ansambluri care se bazează pe .NET Framework 4,0. Excepția încălcării accesului are loc atunci când încercați să inițializați furnizorii de înregistrare în jurnal pentru Microsoft. data. SqlRemoteBlobs. Maintainer. exe.
Rezolvare
Remedierea pentru această problemă este disponibilă în cea mai recentă descărcare pachet de caracteristici pentru RBS. msi. Dacă ați utilizat soluția sugerată, puteți să eliminați sau să activați etichetele legate de înregistrarea în jurnal și să păstrați eticheta supportRuntime .Notă Puteți să reinstalați RBS utilizând noul RBS. msi pentru a aplica remedierea fără a aplica actualizarea.
Descărcați pachetul de caracteristici Microsoft SQL server 2014 Service Pack 1 (SP1) Descărcați pachetul de caracteristici microsoft SQL Server 2012 Service Pack 3 (SP3)
Soluție de evitare
Pentru a rezolva această problemă, adăugați următoarea configurație suplimentară la fișierul de configurare împreună cu eticheta supportedRuntime . Aceste etichete dezactivează capacitatea de înregistrare în jurnal pentru instrumentul de întreținere, deoarece se aruncă excepția în timpul inițializarei furnizorilor de înregistrare în jurnal.
<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>
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.