REVISIÓN: Infracción de acceso cuando mantener EDR con.NET Framework 4.0 en el archivo de configuración relacionados en SQL Server

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 2960310
Síntomas
Se supone que está utilizando un proveedor remoto BLOB Storage (RBS) personalizado junto con el tiempo de ejecución.NET Framework 4.0 para almacenar objetos binarios de forma remota para 2013 de Microsoft SharePoint. Cuando intenta ejecutar la limpieza de basura que internamente llama a Microsoft.Data.SqlRemoteBlobs.Maintainer.exe, recibirá el siguiente mensaje de error durante la recolección:
Iniciando las tareas de encargado de mantenimiento.
Iniciando la recolección.
Iniciando el análisis de referencia.
Hora>: ERR: 0:::AssemblyLoad::: Ocurrió un error al leer la extensión archivo xxxx. RemoteBlobStoreProvider.dll.
Hora>: ERR: 0:::AssemblyLoad::: System.BadImageFormatException: este ensamblado se creó por 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)
Hora>: ERR: 0:::AssemblyLoad::: en System.Reflection.Assembly.nLoadFile (ruta de acceso de cadena, evidencia evidence)
Hora>: ERR: 0:::AssemblyLoad::: en System.Reflection.Assembly.LoadFile (ruta de acceso de cadena)Hora>: ERR: 0:::AssemblyLoad::: en Microsoft.Data.SqlRemoteBlobs.ProviderClass.Initialize()

La herramienta mantenedor está compilada mediante el runtime de.NET Framework 2.0 y no puede cargar ensamblados a los que se basan en la 4.0 de.NET Framework para la enumeración de objetos binarios y recolección. Para cualquier aplicación de.NET Framework, puede utilizar el archivo de configuración de la aplicación y agregue la etiqueta supportedRuntime para utilizar la versión posterior de la de.NET Framework. El archivo de configuración del componente encargado es Microsoft.Data.SqlRemoteBlobs.MaintainerConfig.xml, como en el ejemplo siguiente:
<startup>            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
Si intenta ejecutar la limpieza de basura, Microsoft.Data.SqlRemoteBlobs.Maintainer.exe encuentra una excepción de infracción de acceso, como sigue:
System.AccessViolationException: Se intentó leer o escribir en la memoria protegida. Por lo general, suele ser una indicación de que otra memoria está dañada.
en System.Text.StringBuilder.AppendFormat (IFormatProvider provider, formato de cadena, objeto [] args)
en Microsoft.Data.SqlRemoteBlobs.InformationUtilities.InformationDetails()
en Microsoft.Data.BlobStores.LogProvider.CreateHeaderInformation()
en Microsoft.Data.BlobStores.LogProvider.Initialize (LogLevel logLevel)
en Microsoft.Data.BlobStores.DebugPrint.InitializeProviders()
en Microsoft.Data.BlobStores.DebugPrint.Initialize (Boolean initializeProviders)
en Microsoft.Data.BlobStores.DebugPrint.WriteLine (operación de tipo de operación, nivel de nivel de registro, Int32 blobStoreId, excepción de excepción, mensaje de cadena, objeto [] arg)
en Microsoft.Data.SqlRemoteBlobs.Maintainer.Maintainer.MainInternal() en Microsoft.Data.SqlRemoteBlobs.Maintainer.Maintainer.Main (String [] args)
Causa
La primera excepción se produce porque la herramienta mantenedor se compila utilizando la versión 2.0 de.NET Framework. La herramienta no puede cargar los ensamblados a los que se basan en la 4.0 de.NET Framework. Se produce la excepción de infracción de acceso cuando intenta inicializar los proveedores de registro de Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.
Solución
La corrección para este problema está disponible en la descarga de pack de característica más reciente de RBS.msi. Si utiliza la solución que se propone, puede quitar o habilitar relacionados con el registro de etiquetas y mantiene la etiqueta supportRuntime .

Nota: Puede reinstalar EDR utilizando el nuevo RBS.msi para aplicar la revisión sin aplicar la actualización.
Solución
Para evitar este problema, agregue la siguiente configuración adicional para el archivo de configuración junto con la etiqueta supportedRuntime . Estas etiquetas deshabilitar la capacidad de registro para la herramienta mantenedor porque se inicie 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 que se enumeran en la sección "Aplicable a".

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 2960310 - Última revisión: 11/10/2016 00:39:00 - Revisión: 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 KbMtes
Comentarios