Hvordan du oppgraderer eller nedgradere en samling som har en referansesamling for en CLR-objekt i en forekomst av SQL Server 2005


Feil #: 490 (SQL-hurtigreparasjon)

Sammendrag


Når du prøver å oppgradere eller nedgradere en samling for et common language runtime (CLR)-objekt i en forekomst av Microsoft SQL Server 2005, kan du ikke endre versjonen av de refererte samlingene i metadataene for samlingen. Hvis du bruker en samling med sterkt navn for en CLR-objekt, kan du ikke kan nedgradere samlingen ved å bruke SAMLINGEN ALTER-setning.

INTRODUKSJON


Denne artikkelen beskriver hvordan du oppgraderer eller nedgradere en samling som har en referansesamling for en CLR-objekt i en forekomst av SQL Server 2005.

Hvis du vil ha mer informasjon


Hvordan du oppgraderer eller nedgradere en samling

Du kan bruke SAMLINGEN ALTER-setning i SQL Server 2005, oppgradere eller nedgradere en frittstående samling som ikke ble opprettet med et sterkt navn. Du kan oppgradere men kan ikke nedgradere samlingen ved å bruke SAMLINGEN ALTER-setning for en samling med sterkt navn.

Du kan ikke oppgradere eller nedgradere en samling i følgende situasjon:
  • Samling A opprettes for en CLR-objekt i en forekomst. Samlingen A har en referansesamling. Den refererte samlingen er samlingen B.
  • Samlingen B har ingen referansesamling.
  • Du kompilere samlingen en referanse til en annen versjon av samlingen B.
I dette scenariet kan du bruke SAMLINGEN ALTER-setning oppgradere samling B til en ny versjon. Hvis samlingen B ikke er en samling med sterkt navn, kan du også nedgradere samlingen B en gammel versjon. Du kan ikke bruke SAMLINGEN ALTER-setning, oppgradere eller nedgradere en samling til Rekompilerte versjon.

Dette problemet oppstår fordi SQL Server oppretter en CLR fusion policy når du oppretter samlingen A. Denne policyen for CLR-fusion tilordner automatisk versjonen av samlingen B i metadataene for samlingen A til den faktiske versjonen av samlingen B. SQL Server laster inn den nye versjonen av samlingen B ved kjøretid når du oppgraderer eller nedgradere samlingen B til noen andre versjonen. Dette skjer selv om samlingen A refererer til den opprinnelige versjonen av samlingen B. Men når du prøver å oppgradere eller nedgradere en samling når samlingen A inneholder en ny versjon av samlingen B i metadataene, endre samling-setningen vil mislykkes og du får feilmeldinger som ligner på følgende:
Feilmelding 1
Msg 6529, nivå 16 tilstand 1, linje 1

Endre SAMLINGEN mislyktes fordi identiteten til referansesamling 'RefAsm' er endret. Kontroller at versjonen, navnet og fellesnøkkelen ikke er endret.
Feilmelding 2
Msg 6282, nivå 16 tilstand 1, linje 1

Endre SAMLINGEN mislyktes fordi de refererte samlingene vil endre. Listen over refererte samlingen må være den samme.

Oppgradere eller nedgradere samlingen

Notater
  • Disse trinnene oppgradere eller nedgradere en samling i scenariet som er beskrevet i delen "Slik oppgraderer eller nedgradere en samling".
  • Dette eksemplet forutsetter at versjonene av de to samlingene er både 1.0.0.0 og samlingene begge er skrevet i C#. Når du følger denne fremgangsmåten, forsøker å oppgradere samling A og B-samlingen til versjon 2.0.0.0.
Bruk følgende fremgangsmåte for å oppgradere eller nedgradere en samling.
  1. Sikkerhetskopiere versjon 1.0.0.0 av samlingen B til en mappe.
  2. Endre, og deretter omkompilere samlingen B til versjon 2.0.0.0.
  3. Bruk setningen endre SAMLINGEN oppgradere samling B i SQL Server 2005.
  4. Endre, og deretter omkompilere samling A til versjon 2.0.0.0. Når du gjør dette, referanseversjon 1.0.0.0 av samlingen B fra sikkerhetskopien du opprettet i trinn 1. Hvis du vil gjøre dette, bruker du verktøyet Csc.exe kompilatoren sammen med /reference -bryteren. Hvis du for eksempel bruke følgende kommando:
    CSC-/target:library/out:AssemblyAdll AssemblyA.cs AssemblyInfo.cs /reference: "BackupFolder\AssemblyBdll"
    Obs! Hvis du vil kontrollere hvilken versjon av samlingen B i metadataene for samlingen A, åpne samlingen A ved hjelp av verktøyet Ildasm.exe. Deretter Kontroller metadatainformasjon for referansesamling MANIFEST -delen.
  5. Bruk endre SAMLINGEN-setningen til å oppgradere en samling i SQL Server 2005.

Hvordan å nedgradere en samling med sterkt navn

Hvis du bruker en samling med sterkt navn for en CLR-objekt, støtter ikke SQL Server 2005 ved hjelp av ALTER SAMLINGEN-setningen til å nedgradere samlinger. Hvis du prøver å nedgradere versjonen av en samling ved å bruke SAMLINGEN ALTER-setning, får du en feilmelding som ligner på følgende:
Msg 6579, nivå 16 tilstand 1, linje 1
Endre samling fra ' Asm1, versjon = 1.1.0.0, kultur = nøytral, publickeytoken = 3a52b896cff0513d, processorarchitecture = msil' til ' Asm1, versjon = 1.0.0.0, culture = nøytral, publickeytoken = 3a52b896cff0513d, processorarchitecture = msil' er ikke en kompatibel oppgradering.
Når du ønsker å nedgradere en samling med sterkt navn, følger du disse trinnene:
  1. Fjern alle objekter som er avhengige av samlingen.
  2. Slette den nyere versjonen av samlingen.
  3. Opprette den eldre versjonen av samlingen.
  4. Opprett alle nødvendige objekter som er avhengige av samlingen.
Obs! Du kan oppgradere en samling med sterkt navn ved hjelp av SAMLINGEN ALTER-setning. Hvis oppgraderingen omfatter en referansesamling, må du følge de samme trinnene som er oppført i delen "Oppgradering eller nedgradering en samling".

Referanser


Hvis du vil ha mer informasjon om SAMLINGEN ALTER-setning, kan du gå til følgende webområde for Microsoft Developer Network (MSDN):Hvis du vil ha mer informasjon om Ildasm.exe-verktøyet, kan du gå til følgende MSDN-webområde: