Hur du uppgradera eller nedgradera en sammansättning som har sammansättningen för CLR-objekt i en instans av SQL Server 2005


Programfel #: 490 (SQL-snabbkorrigering)

Sammanfattning


När du försöker uppgradera eller nedgradera en sammansättning för common language runtime (CLR) objekt i en instans av Microsoft SQL Server 2005, kan du inte ändra versionen av de refererade sammansättningarna i metadata för sammansättningen. Dessutom, om du använder en sammansättning med ett starkt namn för CLR-objekt kan inte du nedgradera sammansättningen med uttrycket ALTER sammansättning.

Introduktion


Den här artikeln beskrivs hur du uppgraderar eller nedgradera en sammansättning som har sammansättningen för CLR-objekt i en instans av SQL Server 2005.

Mer Information


Hur du uppgradera eller nedgradera en sammansättning

Du kan använda uttrycket ALTER sammansättning att uppgradera eller nedgradera en fristående sammansättning som inte har skapats med ett starkt krypterat namn i SQL Server 2005. För ett starkt krypterat namn sammansättningen kan uppgradera men går inte att nedgradera sammansättningen med uttrycket ALTER sammansättning.

Du kan inte uppgradera eller nedgradera en sammansättning i följande fall:
  • Sammansättningen A skapas för CLR-objekt i en instans. Sammansättningen A har en sammansättning som refereras. Det refererade paketet är sammansättning B.
  • Paket B har inga sammansättningen.
  • Du kompilerar om sammansättningen A Om du vill referera en annan version av sammansättningen B.
I det här scenariot kan du använda programsatsen ändra sammansättningen uppgradera sammansättning B till en ny version. Om sammansättningen B inte är en sammansättning med ett starkt namn nedgradera du sammansättning B till en gammal version. Men kan inte du använda programsatsen ändra sammansättningen ska uppgradera eller nedgradera en sammansättning till Omkompilerade version.

Problemet uppstår eftersom SQL Server skapar en princip för CLR fusion när du skapar paketet A. Den här principen för CLR fusion mappas automatiskt version av sammansättningen B i metadata för sammansättning A till den verkliga versionen av sammansättningen B. SQL Server läser in den nya versionen av sammansättningen B vid körning när du uppgradera eller nedgradera sammansättning B till vissa andra version. Det här problemet uppstår även om sammansättningen A refererar till den ursprungliga versionen av sammansättningen B. Men när du försöker uppgradera eller nedgradera en sammansättning när sammansättningen A innehåller en ny version av sammansättningen B i metadata, ändra sammansättningen uttrycket misslyckas och felmeddelanden av följande slag:
Felmeddelande 1
Msg 6529, nivå 16, tillstånd 1, rad 1

Det gick inte att ändra sammansättningen eftersom sammansättningen 'RefAsm' identitet har ändrats. Kontrollera att version, namn och offentliga nyckel inte har ändrats.
Felmeddelande 2
Msg 6282, nivå 16, tillstånd 1, rad 1

ÄNDRA sammansättningen misslyckades eftersom de refererade sammansättningarna skulle ändras. Listan sammansättningen måste förbli oförändrad.

Uppgradera eller nedgradera sammansättningen

Kommentarer
  • Här uppgradera eller nedgradera en sammansättning i det scenario som beskrivs i avsnittet ”så att uppgradera eller nedgradera en sammansättning”.
  • Det här exemplet förutsätts att versionerna av två sammansättningar är både 1.0.0.0 och aggregat båda är skrivet i C#. När du följer dessa steg som du försöker uppgradera montering A och B-sammansättning till version 2.0.0.0.
Följ dessa steg om du vill uppgradera eller nedgradera en sammansättning.
  1. Säkerhetskopiera version 1.0.0.0 av sammansättningen B till en mapp.
  2. Ändra och kompilera om sammansättningen B till version 2.0.0.0.
  3. Använda uttrycket ALTER sammansättning för att uppgradera sammansättning B i SQL Server 2005.
  4. Ändra och kompilera om sammansättningen A till version 2.0.0.0. När du gör detta Referensversion 1.0.0.0 av sammansättningen B från den säkerhetskopia som du gjorde i steg 1. Genom att använda verktyget Csc.exe kompilatorn tillsammans med växeln/Reference . Använd till exempel följande kommando:
    CSC /target:library/out:AssemblyAdll- AssemblyA.cs AssemblyInfo.cs/Reference ”:BackupFolder\AssemblyB.dll”
    Obs! Öppna en sammansättning med hjälp av verktyget Ildasm.exe om du vill kontrollera vilken version av sammansättningen B i metadata för sammansättning A. Kontrollera metadatainformation för sammansättningen under avsnittet MANIFEST .
  5. Använda programsatsen ändra sammansättningen för att uppgradera en sammansättning i SQL Server 2005.

Hur du nedgradera en sammansättning med ett starkt namn

Om du använder en sammansättning med ett starkt namn för CLR-objekt stöder inte SQL Server 2005 med uttrycket ALTER sammansättning för att nedgradera sammansättningar. Om du försöker nedgradera version av en sammansättning med uttrycket ALTER sammansättning, visas ett felmeddelande av följande slag:
Msg 6579, nivå 16, tillstånd 1, rad 1
Ändra sammansättningen från ' Asm1, version = 1.1.0.0 kultur = neutral, publickeytoken = 3a52b896cff0513d, processorarchitecture = msil' till ' Asm1, version = 1.0.0.0, culture = neutral, publickeytoken = 3a52b896cff0513d, processorarchitecture = msil' är inte en kompatibla uppgradering.
Gör så här när du vill nedgradera en sammansättning med ett starkt namn:
  1. Ta bort alla objekt som är beroende av sammansättningen.
  2. Släpp den nya versionen av sammansättningen.
  3. Skapa den äldre versionen av sammansättningen.
  4. Skapa alla nödvändiga objekt som är beroende av sammansättningen.
Obs! Du kan uppgradera en sammansättning med ett starkt namn med hjälp av programsatsen ändra sammansättningen. Om uppgraderingen innebär en refererad sammansättning, måste du följa samma steg som nämns i avsnittet ”Uppgradera eller nedgradera en sammansättning”.

Referenser


Mer information om uttrycket ALTER sammansättningen finns på följande Microsoft Developer Network (MSDN)-webbplats:Mer information om verktyget Ildasm.exe finns på följande MSDN-webbplats: