Você está offline; aguardando reconexão

Como atualizar ou reduzir um assembly que tenha um assembly referenciado para um objeto CLR em uma instância do SQL Server 2005

Extended support for SQL Server 2005 ended on April 12, 2016

If you are still running SQL Server 2005, you will no longer receive security updates and technical support. We recommend upgrading to SQL Server 2014 and Azure SQL Database to achieve breakthrough performance, maintain security and compliance, and optimize your data platform infrastructure. Learn more about the options for upgrading from SQL Server 2005 to a supported version here.

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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 917407
Bug #: 490 (Hotfix do SQL)
Sumário
Quando você tenta atualizar ou reduzir um assembly para um objeto de runtime (CLR) de linguagem comum 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 reduzir o assembly usando a instrução ALTER ASSEMBLY.
INTRODUÇÃO
Este artigo descreve como atualizar ou reduzir um assembly que tenha um assembly referenciado para um objeto CLR em uma instância do SQL Server 2005.
Mais Informações

Como atualizar ou reduzir um assembly

No SQL Server 2005, você pode usar a instrução ALTER ASSEMBLY para atualizar ou reduzir um assembly autônomo que não foi criado com um nome forte. Para um assembly de nome forte, você pode atualizar mas não é possível reduzir o assembly usando a instrução ALTER ASSEMBLY.

Não é possível atualizar ou reduzir um assembly na seguinte situação:
  • Assembly A é criada para um objeto CLR em uma instância. UM assembly tem um assembly referenciado. Assembly referenciado é assembly B.
  • Assembly B não tem nenhum assembly referenciado.
  • Recompilar o assembly A referenciar 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 for um assembly de nome forte, você também pode reduzir assembly B para uma versão antiga. No entanto, você não pode usar a instrução ALTER ASSEMBLY para atualizar ou para reduzir o assembly A para a versão recompilada.

Esse comportamento ocorre porque o SQL Server cria uma diretiva de fusão do CLR quando você cria o assembly a. Esta diretiva de fusão do CLR mapeia automaticamente a versão do assembly B nos metadados do assembly A 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 downgrade assembly B para alguma outra versão. Esse comportamento ocorre mesmo que o assembly A refere-se à versão original do assembly B. No entanto, quando você tenta atualizar ou reduzir A assembly quando um assembly contém uma nova versão do assembly B nos metadados, ALTER ASSEMBLY instrução falhará, e você recebe mensagens de erro semelhante ao seguinte:
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 alterado. Verifique se a versã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 os assemblies referenciados seriam alterado. A lista de assembly referenciado deve permanecer a mesma.

Atualizar ou reduzir o assembly

anotações
  • Essas etapas de atualização ou downgrade assembly A no cenário foi descrito na seção "Como atualizar ou reduzir um assembly".
  • Este exemplo assume que as versões dos dois assemblies forem 1.0.0.0 e os assemblies ambos são escritos em translation from VPE for Csharp. Quando você seguir essas etapas, você tenta atualizar um assembly e o assembly B para versão 2.0.0.0.
Para atualizar ou downgrade assembly A, execute essas etapas.
  1. O backup versão 1.0.0.0 do assembly B em uma pasta.
  2. Modificar e, em seguida, recompilar o conjunto de módulos (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 para versão 2.0.0.0. Quando você fizer isso, fazer referência a versão 1.0.0.0 do assembly B a partir do backup que você fez na etapa 1. Para fazer isso, use a ferramenta de compilador csc.exe junto com a opção / reference . Por exemplo, use o seguinte comando:
    csc /target:library/out: AssemblyA .dll AssemblyA .cs /reference AssemblyInfo.cs: BackupFolder \ AssemblyB .dll"
    Observação Para verificar a versão do assembly B nos metadados do assembly A, abra o assembly A usando o utilitário ildasm.exe. Em seguida, verifique se as informações de metadados para o assembly mencionado na seção de MANIFESTO .
  5. Use a instrução ALTER ASSEMBLY para atualizar o assembly A no SQL Server 2005.

Como reduzir um assembly de nome forte

Se você usar um assembly de nome forte para um objeto CLR, o SQL Server 2005 não dá suporte usando a instrução ALTER ASSEMBLY para downgrade assemblies. Se você tentar reduzir a versão de um assembly usando a instrução ALTER ASSEMBLY, você receber uma mensagem de erro semelhante à seguinte:
Msg 6579, nível 16, estado 1, linha 1
Alterar o assembly de ' Asm1, versão = 0, cultura = neutral, publickeytoken = 3a52b896cff0513d, processorarchitecture = msil 'para' Asm1, versão = 1.0.0.0, cultura = neutral, publickeytoken = 3a52b896cff0513d, processorarchitecture = msil ' não é uma atualização compatível.
Quando você deseja reduzir um assembly de nome forte, execute estas etapas:
  1. Descarte todos os objetos que dependem do assembly.
  2. Solte a versão mais recente 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 o ALTER ASSEMBLY instrução. Porém, se a atualização envolve um assembly referenciado, preciso seguir as mesmas etapas listadas na seção "Atualização ou um assembly de downgrade".
Referências
Para obter mais informações sobre a instrução ALTER ASSEMBLY, visite o seguinte site da Web Microsoft Developer Network (MSDN):Para obter mais informações sobre o utilitário ildasm.exe, visite o seguinte site da MSDN:

Propriedades

ID do Artigo: 917407 - Última Revisão: 05/11/2007 06:20:25 - Revisão: 1.2

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbmt kbexpertiseadvanced kbsql2005clr kbhowto KB917407 KbMtpt
Comentários
id"; document.getElementsByTagName("head")[0].appendChild(m);