Síntomas
Suponga que está usando un proveedor de almacenamiento remoto (RBS) personalizado junto con .NET 4,0 Framework de motor en tiempo de ejecución para almacenar blobs de forma remota en Microsoft SharePoint 2013. Al intentar ejecutar la limpieza de elementos no utilizados que internamente llama a Microsoft. Data. SqlRemoteBlobs. Maintainr. exe, recibe el siguiente mensaje de error durante la recolección de elementos no utilizados:
Iniciando tareas de mantenimiento. Iniciando recolección de elementos no utilizados. Iniciando examen de referencia. <hora>: error: 0::: AssemblyLoad::: se produjo un error al leer el archivo de extensión xxxx. RemoteBlobStoreProvider. dll. <Time>: ERR: 0::: AssemblyLoad::: System. BadImageFormatException: este ensamblado se compila con un tiempo de ejecución más reciente que el tiempo de ejecución cargado actualmente y no se puede cargar. (Excepción de HRESULT: 0x8013101B) <> de tiempo : ERR: 0::: AssemblyLoad::: System. Reflection. Assembly. nLoadFile (ruta de acceso de cadena, evidencia de evidencia) <Time>: ERR: 0::: AssemblyLoad::: on System. Reflection. Assembly. LoadFile (String path) <Time>: error: 0::
La herramienta de mantenimiento se compila mediante el tiempo de ejecución de .NET Framework 2,0, y no puede cargar ensamblados basados en .NET Framework 4,0 para la enumeración de blobs y recolección de elementos no utilizados. Para cualquier aplicación de .NET Framework, puede usar el archivo de configuración de la aplicación y agregar la etiqueta supportedRuntime para usar la versión más reciente de .NET Framework. El archivo de configuración del componente de mantenimiento es Microsoft. Data. SqlRemoteBlobs. MaintainerConfig. XML, como en el siguiente ejemplo:
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
Si intenta ejecutar la limpieza de basura, Microsoft. Data. SqlRemoteBlobs. Maintainr. exe encuentra una excepción de infracción de acceso de la siguiente manera:
System. AccessViolationException: se ha intentado leer o escribir en la memoria protegida. Esto suele indicar que hay otra memoria dañada. en System. Text. StringBuilder. AppendFormat (IFormatProvider proveedor, String Format, Object [] args) en Microsoft. Data. SqlRemoteBlobs. InformationUtilities. InformationDetails () en Microsoft. Data. BlobStores. LogProvider. CreateHeaderInformation () en Microsoft. Data. BlobStores. LogProvider. () en Microsoft. Data... y datos. BlobStores. DebugPrint. Initialize (Boolean InitializeProviders) en Microsoft. Data. BlobStores. DebugPrint. WriteLine (OperationType Operation, LogLevel LEVEL, Int32 blobStoreId, Exception Exception, String Message, Object [] Arg) en Microsoft. Data. SqlRemoteBlobs. Maintain. mantenetor. MainInternal () en Microsoft. Data. SqlRemoteBlobs. Maintain.. Main (String [] args)
Causa
La primera excepción se produce porque la herramienta de mantenimiento se compila mediante el 2,0 de .NET Framework. La herramienta no puede cargar ensamblados basados en .NET Framework 4,0. La excepción de infracción de acceso se produce al intentar inicializar los proveedores de registro de Microsoft. Data. SqlRemoteBlobs. Maintain. exe.
Resolución
La solución para este problema está disponible en la última descarga de Feature Pack para RBS. msi. Si ha utilizado la solución sugerida, puede quitar o habilitar las etiquetas relacionadas con el registro y mantener la etiqueta supportRuntime .Nota Puede reinstalar RBS con el nuevo RBS. msi para aplicar la corrección sin aplicar la actualización.
Descargar el paquete de características de Microsoft SQL server 2014 Service Pack 1 (SP1) descargar el paquete de características de microsoft SQL Server 2012 Service Pack 3 (SP3)
Solución alternativa
Para evitar este problema, agregue la siguiente configuración adicional al archivo de configuración junto con la etiqueta supportedRuntime . Estas etiquetas deshabilitan la función de registro para la herramienta de mantenimiento porque se inicia la excepción durante la inicialización de los proveedores de registro.
<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>
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos en la sección "Se aplica a".