Procedura o declassare un assembly che dispone di un assembly di riferimento per un oggetto CLR in un'istanza di SQL Server 2005

Bug #: 490 (Hotfix SQL)

Riepilogo

Quando si tenta di eseguire l'aggiornamento o il downgrade di un assembly per un oggetto common language runtime (CLR) in un'istanza di Microsoft SQL Server 2005, è possibile modificare la versione degli assembly cui viene fatto riferimento nei metadati dell'assembly. Inoltre, se si utilizza un assembly con nome sicuro per un oggetto CLR, è possibile effettuare il downgrade dell'assembly utilizzando l'istruzione ALTER ASSEMBLY.

INTRODUZIONE

In questo articolo viene descritto come eseguire l'aggiornamento o il downgrade di un assembly che dispone di un assembly di riferimento per un oggetto CLR in un'istanza di SQL Server 2005.

Ulteriori informazioni

Procedura o declassare un assembly

In SQL Server 2005, è possibile utilizzare l'istruzione ALTER ASSEMBLY per o declassare un assembly autonomo che non è stato creato con un nome sicuro. Per un assembly con nome sicuro, è possibile eseguire l'aggiornamento ma non può effettuare il downgrade dell'assembly utilizzando l'istruzione ALTER ASSEMBLY.

Non è possibile aggiornare o effettuare il downgrade di un assembly nel seguente scenario:

  • L'assembly viene creato per un oggetto CLR in un'istanza. L'assembly è un assembly di riferimento. Assembly di riferimento è l'assembly B.

  • L'assembly B non ha alcun assembly cui viene fatto riferimento.

  • Ricompilare l'assembly per fare riferimento a una versione diversa dell'assembly B.

In questo scenario, è possibile utilizzare l'istruzione ALTER ASSEMBLY per aggiornare l'assembly B a una nuova versione. Se l'assembly B non è un assembly con nome sicuro, è anche possibile installare l'assembly B a una versione precedente. Tuttavia, è possibile utilizzare l'istruzione ALTER ASSEMBLY per aggiornare o eseguire il downgrade di un assembly alla versione ricompilato.

Questo comportamento si verifica perché SQL Server crea un criterio di fusion di Common Language Runtime quando si crea l'assembly A. Questo criterio di fusion di Common Language Runtime associa automaticamente la versione dell'assembly B nei metadati dell'assembly per la versione dell'assembly B. SQL Server carica la nuova versione dell'assembly B in fase di esecuzione durante l'aggiornamento o downgrade assembly B da una versione diversa. Questo comportamento si verifica anche se l'assembly fa riferimento alla versione originale dell'assembly B. Tuttavia, quando si tenta di aggiornare o effettuare il downgrade di un assembly quando un assembly contiene una nuova versione dell'assembly B nei metadati, l'istruzione ALTER ASSEMBLY non riuscirà e si ricevono messaggi di errore analoghi ai seguenti:

Messaggio di errore 1

Msg 6529, livello 16, stato 1, riga 1

Istruzione ALTER ASSEMBLY non riuscita perché l'identità dell'assembly di riferimento 'RefAsm' è stato modificato. Assicurarsi che la versione, nome e chiave pubblica non sono stati modificati.

Messaggio di errore 2

Msg 6282, livello 16, stato 1, riga 1

Istruzione ALTER ASSEMBLY non riuscita perché modificherebbe l'assembly di riferimento. L'elenco di assembly di riferimento deve rimanere invariato.

O declassare assembly

Note

  • Questi passaggi o declassare un assembly nello scenario descritto nella sezione "Come o declassare un assembly".

  • In questo esempio si presuppone che le versioni di due assembly 1.0.0.0 sia gli assembly vengono scritti in C#. Quando si esegue questa procedura, si tenta di aggiornare l'assembly e assembly B alla versione 2.0.0.0.

Per migliorare o declassare un assembly, attenersi alla seguente procedura.

  1. In una cartella di backup versione 1.0.0.0 dell'assembly B.

  2. Modificare e ricompilare l'assembly B alla versione 2.0.0.0.

  3. Utilizzare l'istruzione ALTER ASSEMBLY per aggiornare l'assembly B in SQL Server 2005.

  4. Modificare e ricompilare l'assembly alla versione 2.0.0.0. Se si esegue questa versione 1.0.0.0 di riferimento dell'assembly B dalla copia di backup creata nel passaggio 1. A tale scopo, utilizzare lo strumento compilatore di Csc.exe con l'opzione /reference . Ad esempio, utilizzare il comando seguente:

    csc /target: library /out:AssemblyA. dll AssemblyAcs AssemblyInfo.cs /reference: "BackupFolder\AssemblyB. dll"Nota: Per verificare la versione dell'assembly B nei metadati dell'assembly, aprire un assembly utilizzando l'utilità Ildasm.exe. Quindi, verificare le informazioni sui metadati dell'assembly cui viene fatto riferimento nella sezione manifesto .

  5. Utilizzare l'istruzione ALTER ASSEMBLY per aggiornare un assembly in SQL Server 2005.

Come effettuare il downgrade di un assembly con nome sicuro

Se si utilizza un assembly con nome sicuro per un oggetto CLR, SQL Server 2005 non supporta l'utilizzo dell'istruzione ALTER ASSEMBLY per effettuare il downgrade di assembly. Se si tenta di effettuare il downgrade della versione di un assembly utilizzando l'istruzione ALTER ASSEMBLY, viene visualizzato un messaggio di errore analogo al seguente:

Msg 6579, livello 16, stato 1, riga 1
ALTER assembly da ' Asm1, versione = 1.1.0.0, impostazioni cultura = neutral, publickeytoken = 3a52b896cff0513d, processorarchitecture = msil' a ' Asm1, versione = 1.0.0.0, culture = neutral, publickeytoken = 3a52b896cff0513d, processorarchitecture = msil' non un aggiornamento compatibile.

Quando si desidera effettuare il downgrade di un assembly con nome sicuro, attenersi alla seguente procedura:

  1. Eliminare tutti gli oggetti che dipendono da assembly.

  2. Eliminare la versione più recente dell'assembly.

  3. Creare la versione precedente dell'assembly.

  4. Creare tutti gli oggetti richiesti variano in base all'assembly.

Nota: È possibile aggiornare un assembly con nome sicuro utilizzando l'istruzione ALTER ASSEMBLY. Tuttavia, se l'aggiornamento richiede un assembly di riferimento, devono seguire gli stessi passaggi elencati nella sezione "Aggiornamento o downgrade a un assembly".

Riferimenti

Per ulteriori informazioni sull'istruzione ALTER ASSEMBLY, visitare il seguente sito Web Microsoft Developer Network (MSDN):

http://msdn2.microsoft.com/en-us/library/ms186711.aspxPer ulteriori informazioni sull'utilità Ildasm.exe, visitare il seguente sito Web MSDN:

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

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×