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

Bug n º: 490 (Hotfix do SQL)

Sumário

Quando você tenta atualizar ou fazer downgrade de um assembly para um objeto common language runtime (CLR) em uma instância do Microsoft SQL Server 2005, você não pode alterar a versão dos assemblies referenciados nos metadados do assembly. Além disso, se você usar um assembly de nome forte para um objeto CLR, não é possível transformar o assembly usando a instrução ALTER ASSEMBLY.

INTRODUÇÃO

Este artigo descreve como fazer upgrade ou downgrade de um conjunto que possui um assembly referenciado para um objeto CLR em uma instância do SQL Server 2005.

Mais informações

Como fazer upgrade ou downgrade de um assembly

No SQL Server 2005, você pode usar a instrução ALTER ASSEMBLY para fazer upgrade ou downgrade de um assembly independente que não foi criado com um nome forte. Para um assembly de nome forte, você pode atualizar mas não pode fazer downgrade do assembly usando a instrução ALTER ASSEMBLY.

Você não pode fazer upgrade ou downgrade de um assembly na seguinte situação:

  • Um assembly é criado para um objeto CLR em uma instância. Um assembly tem um assembly referenciado. O assembly referenciado é o assembly B.

  • O assembly B não tem nenhum assembly referenciado.

  • Recompile o assembly A para fazer referência a uma versão diferente do assembly B.

Nesse cenário, você pode usar a instrução ALTER ASSEMBLY para atualizar o assembly B para uma nova versão. Se o assembly B não é um assembly de nome forte, também passar assembly B a uma versão antiga. No entanto, você não pode usar a instrução ALTER ASSEMBLY para upgrade ou downgrade de um assembly para a versão recompilado.

Esse comportamento ocorre porque o SQL Server cria uma política de fusão do CLR quando você criar o assembly A. Esta diretiva de fusão do CLR mapeia automaticamente a versão do assembly B nos metadados do assembly que um para a versão real do assembly B. SQL Server carrega a nova versão do assembly B em tempo de execução quando você atualizar ou fazer downgrade assembly B para alguma outra versão. Esse comportamento ocorre mesmo se A montagem refere-se à versão original do assembly B. No entanto, quando você tenta atualizar ou fazer downgrade de um assembly quando um assembly contém uma nova versão do assembly B nos metadados, a instrução ALTER ASSEMBLY falhará e você recebe mensagens de erro semelhantes aos seguintes:

Mensagem de erro 1

Msg 6529, nível 16, estado 1, linha 1

Falha em ALTER ASSEMBLY porque a identidade do assembly referenciado 'RefAsm' foi alterada. Verifique se que a versão, o nome e a chave pública não foram alterados.

Mensagem de erro 2

Msg 6282, nível 16, estado 1, linha 1

Falha em ALTER ASSEMBLY porque as montagens referenciadas seriam alteradas. A lista de montagens referenciadas deve permanecer igual.

Fazer upgrade ou downgrade do assembly

Observações:

  • Estas etapas fazer upgrade ou downgrade de um assembly no cenário descrito na seção "Como atualizar ou fazer downgrade de um assembly".

  • Este exemplo assume que as versões dos dois assemblies são 1.0.0.0 e os assemblies são escritos em C#. Quando você seguir essas etapas, você tentar atualizar o assembly A e B para versão 2.0.0.0.

Para fazer upgrade ou downgrade de um assembly, siga estas etapas.

  1. Fazer backup a versão 1.0.0.0 do assembly B em uma pasta.

  2. Modificar e, em seguida, recompile o assembly B versão 2.0.0.0.

  3. Use a instrução ALTER ASSEMBLY para atualizar o assembly B no SQL Server 2005.

  4. Modificar e, em seguida, recompile o assembly A versão 2.0.0.0. Quando você fizer isso, a versão 1.0.0.0 do referência do assembly B de backup que você criou na etapa 1. Para fazer isso, use a ferramenta de compilador Csc.exe em conjunto com a opção /reference . Por exemplo, use o seguinte comando:

    /target:library CSC /out:AssemblyA. dll AssemblyA. cs /reference AssemblyInfo.cs: "BackupFolder\. dllAssemblyB"Observação: Para verificar a versão do assembly B nos metadados do assembly A, abra um assembly usando o utilitário Ildasm.exe. Em seguida, verifique se as informações de metadados para o assembly referenciado na seção de manifesto .

  5. Use a instrução ALTER ASSEMBLY para atualizar um assembly no SQL Server 2005.

Como fazer o downgrade de um assembly de nome forte

Se você usar um assembly de nome forte para um objeto CLR, o SQL Server 2005 não oferece suporte usando a instrução ALTER ASSEMBLY para assemblies de downgrade. Se você tentar fazer o downgrade da versão de um assembly usando a instrução ALTER ASSEMBLY, você recebe uma mensagem de erro semelhante à seguinte:

Msg 6579, nível 16, estado 1, linha 1
ALTER assembly de ' Asm1, versão = 1.1.0.0, culture = neutral, publickeytoken = 3a52b896cff0513d, processorarchitecture = msil' para ' Asm1, versão = 1.0.0.0, culture = neutral, publickeytoken = 3a52b896cff0513d, processorarchitecture = msil' não é um atualização compatível.

Quando você deseja fazer o downgrade de um assembly de nome forte, siga estas etapas:

  1. Descarte todos os objetos que dependem do assembly.

  2. Solte a mais recente versão do assembly.

  3. Crie a versão mais antiga do assembly.

  4. Crie todos os objetos necessários que dependem do assembly.

Observação: Você pode atualizar um assembly de nome forte usando a instrução ALTER ASSEMBLY. No entanto, se o upgrade envolve um assembly referenciado, você deve seguir as mesmas etapas listadas na seção "Upgrade ou downgrade de um assembly".

Referências

Para obter mais informações sobre a instrução ALTER ASSEMBLY, visite o seguinte site da Microsoft Developer Network (MSDN):

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

http://msdn2.microsoft.com/en-us/library/aa309387(VS.71).aspx

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?
Ao pressionar enviar, seus comentários serão usados para aprimorar os produtos e serviços da Microsoft. Seu administrador de TI poderá coletar esses dados. Política de Privacidade.

Agradecemos seus comentários!

×