CORRECÇÃO: Violação de acesso quando mantém RBS com o 4.0 Framework .NET no ficheiro de configuração relacionados no SQL Server

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 2960310
Sintomas
Suponha que está a utilizar um fornecedor de armazenamento de BLOB remoto (RBS) personalizado em conjunto com o tempo de execução do .NET Framework 4.0 para armazenar blobs remotamente para o Microsoft SharePoint 2013. Quando tenta executar a limpeza de lixo internamente chama Microsoft.Data.SqlRemoteBlobs.Maintainer.exe, recebe a seguinte mensagem de erro durante a recolha de lixo:
Iniciar tarefas de conceptor.
A iniciar a recolha de lixo.
A iniciar a análise de referência.
Hora>: ERRO: 0:::AssemblyLoad::: Ocorreu um erro ao ler xxxx do ficheiro de extensão. RemoteBlobStoreProvider.dll.
Hora>: ERRO: 0:::AssemblyLoad::: System.BadImageFormatException: esta assemblagem é composta por um tempo de execução mais recente do que o tempo de execução actualmente carregado e não pode ser carregada. (Excepção de HRESULT: 0x8013101B)
Hora>: ERRO: 0:::AssemblyLoad::: em System.Reflection.Assembly.nLoadFile (caminho de cadeia, elementos de prova)
Hora>: ERRO: 0:::AssemblyLoad::: em System.Reflection.Assembly.LoadFile (caminho de cadeia)Hora>: ERRO: 0:::AssemblyLoad::: em Microsoft.Data.SqlRemoteBlobs.ProviderClass.Initialize()

A ferramenta de conceptor é compilada utilizando o tempo de execução do .NET Framework 2.0 e não é possível carregar as assemblagens que sejam baseiam os 4.0 de Framework de .NET para a enumeração de blobs e recolha de lixo. Para qualquer aplicação do .NET Framework, pode utilizar o ficheiro de configuração da aplicação e adicionar a marca supportedRuntime para utilizar a versão mais recente do .NET Framework. O ficheiro de configuração do componente conceptor é Microsoft.Data.SqlRemoteBlobs.MaintainerConfig.xml, conforme o exemplo seguinte:
<startup>            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
Se tentar executar a limpeza de lixo, Microsoft.Data.SqlRemoteBlobs.Maintainer.exe encontrar uma excepção de violação de acesso, do seguinte modo:
System.AccessViolationException: Tentativa de ler ou escrever na memória protegida. Isto é, frequentemente, uma indicação de que existe outra memória danificada.
em System.Text.StringBuilder.AppendFormat (fornecedor de IFormatProvider, formato de cadeia, argumentos do objecto [])
em Microsoft.Data.SqlRemoteBlobs.InformationUtilities.InformationDetails()
em Microsoft.Data.BlobStores.LogProvider.CreateHeaderInformation()
em Microsoft.Data.BlobStores.LogProvider.Initialize (LogLevel logLevel)
em Microsoft.Data.BlobStores.DebugPrint.InitializeProviders()
em Microsoft.Data.BlobStores.DebugPrint.Initialize (Boolean initializeProviders)
em Microsoft.Data.BlobStores.DebugPrint.WriteLine (OperationType operação, nível de LogLevel, Int32 blobStoreId, excepção de excepção, mensagem de cadeia, arg. objecto [])
a Microsoft.Data.SqlRemoteBlobs.Maintainer.Maintainer.MainInternal() em Microsoft.Data.SqlRemoteBlobs.Maintainer.Maintainer.Main (cadeia [] args)
Causa
A primeira excepção ocorre porque a ferramenta de conceptor é compilada utilizando o .NET Framework 2.0. A ferramenta não consegue carregar as assemblagens que sejam baseiam a 4.0 do .NET Framework. A excepção de violação de acesso ocorre quando tenta inicializar os fornecedores de registo para Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.
Resolução
A correcção para este problema está disponível a transferência de pack funcionalidade mais recente para o RBS.msi. Se tiver de utilizar a solução sugerida, pode remover ou activar o registo relacionado com tags e mantém a tag de supportRuntime .

Nota Pode reinstalar RBS utilizando o RBS.msi de novo para aplicar a correcção sem aplicar a actualização.
Como contornar
Para contornar este problema, adicione a seguinte configuração adicional para o ficheiro de configuração com a marca supportedRuntime . Estes códigos desactivar a capacidade de registo para a ferramenta conceptor porque está a ser excepção durante a inicialização dos fornecedores de registo.
 <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>
Ponto Da Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 2960310 - Última Revisão: 11/10/2016 00:55:00 - Revisão: 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 KbMtpt
Comentários