Entrar com a conta da Microsoft
Entre ou crie uma conta.
Olá,
Selecione uma conta diferente.
Você tem várias contas
Escolha a conta com a qual você deseja entrar.

Sintomas

Considere os seguintes cenários.

Cenário 1

Criar uma rotina de tempo de execução (CLR) idioma comum que referencia um assembly do Microsoft.NET Framework. O assembly do.NET Framework não está documentado no artigo da Base de Conhecimento 922672. Em seguida, você instala o.NET Framework 3.5 ou um hotfix do.NET Framework 2.0.

Cenário 2

Você cria um assembly e, em seguida, você registrará o assembly em um banco de dados do Microsoft SQL Server. Em seguida, você instalar uma versão diferente do assembly no Global Assembly Cache (GAC).

Quando você executar a rotina CLR ou usa o assembly de qualquer um desses cenários no SQL Server, você recebe uma mensagem de erro semelhante à seguinte:

Servidor: Msg 6522, nível 16, estado 2, linha 1
Ocorreu um erro do.NET Framework durante a execução da rotina definida pelo usuário ou agregada 'getsid':

System.IO.FileLoadException: Não foi possível carregar arquivo ou assembly ' System. DirectoryServices, versão = 2.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' ou uma de suas dependências. Assembly no armazenamento host tem uma assinatura diferente do assembly no GAC. (Exceção de HRESULT: 0x80131050)

System.IO.FileLoadException:

Causa

Quando um assembly é carregado o CLR, o CLR verifica se o mesmo assembly no GAC. Se o mesmo assembly no GAC, o CLR verifica se as identificações de versão de módulo (MVIDs) desses assemblies correspondem. Se o MVIDs desses assemblies não coincidirem, você receberá a mensagem de erro mencionadas na seção "Sintomas".

Quando um assembly é recompilado, altera o MVID do assembly. Portanto, se você atualizar o.NET Framework, os assemblies do.NET Framework têm diferentes MVIDs porque esses assemblies são recompilados. Além disso, se você atualizar seu próprio assembly, o assembly é recompilado. Portanto, o conjunto também possui um MVID diferente.

Solução alternativa

Solução alternativa 1

Como solução alternativa para o cenário 1 na seção "Sintomas", você deve atualizar manualmente os assemblies do.NET Framework no SQL Server. Para fazer isso, use a instrução ALTER ASSEMBLY para apontar para a nova versão do assembly do.NET Framework na seguinte pasta:

%Windir%\Microsoft.NET\Framework\VersionObservação: Versão representa a versão do.NET Framework instalado ou atualizado.

Solução alternativa 2

Como solução alternativa para o cenário 2 na seção "Sintomas", use a instrução ALTER ASSEMBLY para atualizar o assembly no banco de dados.

Se o problema ainda existir depois que você fizer isso, solte o conjunto do banco de dados e, em seguida, registrar a nova versão do assembly no banco de dados.

Status

A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".

Mais informações

Não recomendamos que você use os assemblies do.NET Framework que não estão documentados no artigo 922672 do Knowledge Base. Artigo do Knowledge Base 922672 lista os assemblies que são testados no ambiente hospedado pelo CLR do SQL Server.

Para obter mais informações, clique no número de artigo a seguir para visualizar o artigo na Base de Dados de Conhecimento da Microsoft:

Política de suporte 922672 para assemblies do.NET Framework não testados no ambiente hospedado pelo SQL Server CLR

Descrição de rotinas CLR

Rotinas de CLR incluem os seguintes objetos são implementados por meio de integração do SQL Server com o CLR do.NET Framework:

  • Valor escalar a funções definidas pelo usuário (UDFs escalares)

  • Com valor de tabela a funções definidas pelo usuário (TVFs)

  • Procedimentos definidos pelo usuário (UDPs)

  • Disparadores definidos pelo usuário

  • Tipos de dados definidos pelo usuário

  • Agregações definidas pelo usuário

Módulos (assemblies) para atualizar depois que você instalar o.NET Framework 3.5

Depois de instalar o.NET Framework 3.5, você deve usar a instrução ALTER ASSEMBLY para atualizar os seguintes assemblies:

  • Accessibility.dll

  • AspNetMMCExt.dll

  • Cscompmgd.dll

  • IEExecRemote.dll

  • IEHost.dll

  • IIEHost.dll

  • Microsoft.Build.Conversion.dll

  • Microsoft.Build.Engine.dll

  • Microsoft.Build.Framework.dll

  • Microsoft.Build.Tasks.dll

  • Microsoft.Build.Utilities.dll

  • Microsoft.CompactFramework.Build.Tasks.dll

  • Microsoft.JScript.dll

  • Microsoft.VisualBasic.Vsa.dll

  • Microsoft.Vsa.dll

  • Microsoft.Vsa.Vb.CodeDOMProcessor.dll

  • Microsoft_VsaVb.dll

  • Sysglobl.dll

  • System.Configuration.Install.dll

  • System.Design.dll

  • System.DirectoryServices.dll

  • System.DirectoryServices.Protocols.dll

  • System.Drawing.dll

  • System.Drawing.Design.dll

  • System.EnterpriseServices.dll

  • System.Management.dll

  • System.Messaging.dll

  • System.Runtime.Serialization.Formatters.Soap.dll

  • System.ServiceProcess.dll

  • System.Web.dll

  • System.Web.Mobile.dll

  • System.Web.RegularExpressions.dll

Esses assemblies estão na seguinte pasta:

%Windir%\Microsoft.NET\Framework\v2.0.50727

Como preservar os dados de tipos de dados definidos pelo usuário após você soltar um assembly

Se você soltar um assembly que usa um tipo de dados definidos pelo usuário do SQL Server, você pode usar um dos seguintes métodos para preservar os dados.

Suponha que o seguinte seja o cenário:

  • Você cria um assembly cujo nome é
    MyAssembly.dll.

  • As referências de assembly MyAssembly a
    Assembly System.DirectoryServices.dll .

  • Você tem um tipo de dados definido pelo usuário cujo nome é
    MyDateTime.

  • O tipo de dados MyDateTime usa o assembly myAssembly. dll.

  • Você cria uma tabela cujo nome é MyTable.

  • A tabela de MyTable contém os dados do tipo de dados MyDateTime .

Método 1: Usar o utilitário bcp.exe.

  1. Use o utilitário Bcp.exe exe com a opção – n para copiar os dados da tabela MyTable em um arquivo. Por exemplo, execute o seguinte comando em um prompt de comando:

    bcp MyDatabase.dbo.MyTable out C:\MyFile.bcp -n –SSQLServerName  -T
  2. No SQL Server Management Studio, execute estas etapas:

    1. Descarte a tabela de MyTable.

    2. Solte o tipo de dados MyDateTime .

    3. Descarte o assembly System.DirectoryServices.dll .

    4. Descarte o assembly MyAssembly .

  3. No SQL Server Management Studio, execute estas etapas:

    1. Registre o assembly System.DirectoryServices.dll .

    2. Registre o assembly MyAssembly .

    3. Crie o tipo de dados MyDateTime .

    4. Crie uma nova tabela que tenha a mesma estrutura da tabela como a tabela de MyTable.

  4. Use o utilitário Bcp.exe exe com a opção – n para importar os dados do arquivo para a tabela de MyTable. Por exemplo, execute o seguinte comando em um prompt de comando:

    bcp MyDatabase.dbo.MyTable in C:\MyFile.bcp -n –SSQLServerName  -T

Método 2: Use INSERT... Instrução SELECT

Suponha que o tipo de dados MyDateTime ocupa 9 bytes no armazenamento.

  1. No SQL Server Management Studio, crie uma nova tabela que contenha uma coluna do tipo de dados VARBINARY(9) , executando a instrução a seguir:

    CREATE TABLE TempTable (c1 VARBINARY(9))
  2. Execute o seguinte Inserir... Selecione instrução para preencher a tabela de TemTable:

    INSERT INTO TempTable SELECT CAST(c1 as VARBINARY(9)) FROM MyTable
  3. No SQL Server Management Studio, execute estas etapas:

    1. Descarte a tabela de MyTable.

    2. Solte o tipo de dados MyDateTime .

    3. Descarte o assembly System.DirectoryServices.dll .

    4. Descarte o assembly MyAssembly .

  4. No SQL Server Management Studio, execute estas etapas:

    1. Registre o assembly System.DirectoryServices.dll .

    2. Registre o assembly MyAssembly .

    3. Crie o tipo de dados MyDateTime .

    4. Crie uma nova tabela que tenha a mesma estrutura da tabela como a tabela de MyTable.

  5. Execute o seguinte Inserir... Selecione instrução para preencher a tabela de MyTable:

    INSERT INTO MyTable SELECT c1 FROM TempTable

Referências

Para obter mais informações sobre a versão do assembly, visite o seguinte site da Microsoft Developer Network (MSDN):

http://msdn2.microsoft.com/en-us/library/51ket42z(VS.80).aspxPara obter mais informações sobre como atualizar um assembly, visite o seguinte site da MSDN:

http://msdn2.microsoft.com/en-us/library/ms186711.aspxPara obter mais informações sobre como descartar um assembly, visite o seguinte site da MSDN:

http://msdn2.microsoft.com/en-us/library/ms177514.aspxPara obter mais informações sobre como registrar um assembly em um banco de dados do SQL Server 2005, visite o seguinte site da MSDN:

http://msdn2.microsoft.com/en-us/library/ms189524.aspxPara obter mais informações sobre o utilitário Bcp.exe exe, visite o seguinte site da MSDN:

http://msdn2.microsoft.com/en-us/library/ms162802.aspx

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?

Obrigado pelos seus comentários!

×