FIX: Toegangsfout als u Resourcestructuur met het .NET Framework 4.0 in Verwante configuratiebestand in SQL Server onderhouden

BELANGRIJK: Dit artikel is vertaald door middel van automatische vertalingssoftware van Microsoft en is mogelijk nabewerkt door de Microsoft Community via CTF-technologie (Community Translation Framework) of door een menselijke vertaler. Microsoft biedt zowel automatisch vertaalde, door mensen vertaalde en door de community nabewerkte artikelen aan, zodat er in meerdere talen toegang is tot alle artikelen in onze Knowledge Base. Een vertaald of bewerkt artikel kan fouten bevatten in vocabulaire, syntaxis of grammatica.. Microsoft is niet verantwoordelijk voor eventuele onjuistheden, fouten of schade ten gevolge van een foute vertaling van de inhoud van een bericht of het gebruik van deze vertaalde berichten door onze klanten.

De Engelstalige versie van dit artikel is de volgende: 2960310
Symptomen
Stel dat u een aangepaste provider externe BLOB-opslag (RBS) en Runtime .NET Framework 4.0 gebruikt voor het opslaan van BLOB's op afstand voor Microsoft SharePoint 2013. Wanneer u probeert uit te voeren van het vuilnis opruimen die intern Microsoft.Data.SqlRemoteBlobs.Maintainer.exe aanroept, wordt het volgende foutbericht weergegeven tijdens de garbage collector:
Maintainer taken starten.
Garbage collector wordt gestart.
Verwijzing Scan starten.
Tijd>: FOUTBERICHT: 0:::AssemblyLoad::: is een fout opgetreden tijdens het lezen van extensie bestand xxxx. RemoteBlobStoreProvider.dll.
Tijd>: FOUTBERICHT: 0:::AssemblyLoad::: System.BadImageFormatException: deze assembly wordt gebouwd door een nieuwer is dan de momenteel geladen runtime runtime en kan niet worden geladen. (Uitzondering op HRESULT: 0x8013101B)
Tijd>: FOUTBERICHT: 0:::AssemblyLoad::: op System.Reflection.Assembly.nLoadFile (String path, bewijzen bewijzen)
Tijd>: FOUTBERICHT: 0:::AssemblyLoad::: op System.Reflection.Assembly.LoadFile (String path)Tijd>: FOUTBERICHT: 0:::AssemblyLoad::: op Microsoft.Data.SqlRemoteBlobs.ProviderClass.Initialize()

Het hulpprogramma Maintainer is gecompileerd met behulp van het .NET Framework 2.0-runtime en assembly's die zijn gebaseerd op het .NET Framework 4.0 voor de opsomming van BLOB's en garbage collectie kan niet worden geladen. U kunt voor elke .NET Framework-toepassing, het configuratiebestand van de toepassing gebruiken en de supportedRuntime -label voor het gebruik van de latere versie van .NET Framework toevoegen. Het configuratiebestand van het onderdeel Maintainer is Microsoft.Data.SqlRemoteBlobs.MaintainerConfig.xml, zoals in het volgende voorbeeld:
<startup>            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
Als u het vuilnis opruimen probeert, tegenkomt Microsoft.Data.SqlRemoteBlobs.Maintainer.exe een uitzondering van de schending van toegang als volgt:
System.AccessViolationException: Er is geprobeerd te lezen of schrijven beschermd geheugen. Dit is vaak een indicatie dat andere geheugen beschadigd is.
bij System.Text.StringBuilder.AppendFormat (IFormatProvider provider, String format, Object [] args)
op Microsoft.Data.SqlRemoteBlobs.InformationUtilities.InformationDetails()
op Microsoft.Data.BlobStores.LogProvider.CreateHeaderInformation()
op Microsoft.Data.BlobStores.LogProvider.Initialize (LogLevel logLevel)
op Microsoft.Data.BlobStores.DebugPrint.InitializeProviders()
op Microsoft.Data.BlobStores.DebugPrint.Initialize (Boolean initializeProviders)
bij Microsoft.Data.BlobStores.DebugPrint.WriteLine (OperationType-bewerking, LogLevel niveau, Int32 blobStoreId, uitzondering uitzondering, String message, Object [] arg)
op Microsoft.Data.SqlRemoteBlobs.Maintainer.Maintainer.MainInternal() op Microsoft.Data.SqlRemoteBlobs.Maintainer.Maintainer.Main (String [] args)
Oorzaak
De eerste uitzondering doet zich voor omdat het hulpprogramma Maintainer is gecompileerd met behulp van .NET Framework 2.0. Het hulpprogramma voor assembly's die zijn gebaseerd op het .NET Framework 4.0 kan niet worden geladen. De uitzondering van de schending van toegang is bij het initialiseren van de providers registreren voor Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.
Oplossing
De correctie voor dit probleem is beschikbaar in de nieuwste functie pack downloaden van RBS.msi. Als u de tijdelijke oplossing die wordt voorgesteld hebt gebruikt, kunt u verwijderen of inschakelen van de logboekregistratie-gerelateerde tags en ervoor zorgen dat de code supportRuntime .

Opmerking U kunt de Resourcestructuur met behulp van de nieuwe RBS.msi voor de correctie toepassen zonder dat u de update installeren.
Workaround
Om dit probleem te omzeilen, voeg de volgende extra configuratie naar het configuratiebestand met de supportedRuntime -label. Deze tags uitschakelen de mogelijkheid tot het vastleggen van het hulpprogramma Maintainer omdat de uitzondering wordt gegenereerd tijdens de initialisatie van de logboekregistratie-providers.
 <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>
Status
Microsoft heeft bevestigd dat dit probleem kan optreden in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.

Eigenschappen

Artikel-id: 2960310 - Laatst bijgewerkt: 11/10/2016 00:51:00 - Revisie: 7.0

Microsoft SQL Server 2012 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2012 Service Pack 2

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2960310 KbMtnl
Feedback