Das upgrade oder Downgrade für eine Assembly eine referenzierte Assembly für ein CLR-Objekt in eine Instanz von SQL Server 2005


Fehler #: 490 (SQL Hotfix)

Zusammenfassung


Beim upgrade oder Downgrade für eine Assembly für ein Objekt zum common Language Runtime (CLR) in einer Microsoft SQL Server 2005-Instanz kann nicht die Version der referenzierten Assemblys in den Metadaten der Assembly ändern. Darüber hinaus können Sie bei Verwendung eine Assembly mit starkem Namen für ein CLR-Objekt nicht Assembly herabstufen mithilfe der ALTER ASSEMBLY-Anweisung.

Einführung


Dieser Artikel beschreibt das upgrade oder Downgrade für eine Assembly eine referenzierte Assembly für ein CLR-Objekt in eine Instanz von SQL Server 2005.

Weitere Informationen


Das upgrade oder Downgrade für Baugruppen

In SQL Server 2005 können Sie die Anweisung ALTER ASSEMBLY aktualisieren oder Herabstufen einer eigenständigen Assembly nicht mit einem starken Namen erstellt wurde. Für eine Assembly mit starkem Namen können aber können die Assembly mithilfe der ALTER ASSEMBLY-Anweisung nicht herabstufen.

Aktualisierung oder downgrade eine Assembly im folgenden Szenario:
  • Assembly A wird für ein CLR-Objekt in eine Instanz erstellt. Assembly A hat eine Assembly. Die referenzierte Assembly ist Assembly b
  • Assembly B ist keine Assembly verwiesen wird.
  • Kompilieren einer anderen Version von Assembly b auf Assembly A
ALTER ASSEMBLY-Anweisung können Sie in diesem Szenario B auf eine neue Version aktualisieren. Wenn Assembly B keine Assembly mit starkem Namen ist, kann auch Assembly B mit einer alten Version heruntergestuft werden. ALTER ASSEMBLY-Anweisung jedoch kann nicht Upgrade oder Downgrade Assembly eine neu Version verwenden.

Dieses Verhalten tritt auf, weil SQL Server eine CLR-Fusion-Richtlinie beim Erstellen von Assembly a erstellt Diese Richtlinie CLR Fusion ordnet automatisch die Version der Assembly B in den Metadaten der Assembly A auf die aktuelle Version von Assembly b SQL Server die neue Version der Assembly B zur Laufzeit geladen, beim upgrade oder Downgrade für Assembly B eine andere Version. Dieses Verhalten tritt auf, obwohl die ursprüngliche Version der Assembly b Assembly A verweist Aber wenn Sie versuchen, upgrade oder Downgrade für eine Assembly Assembly enthält eine neue Version der Assembly B in den Metadaten, die ALTER ASSEMBLY-Anweisung schlägt fehl und Fehlermeldungen, die den folgenden ähneln:
Fehlermeldung 1
Msg 6529, Ebene 16, Status 1, Zeile 1

Fehler bei ALTER ASSEMBLY, weil die Identität der 'RefAsm' geändert wurde. Stellen Sie sicher, dass die Version, den Namen und den öffentlichen Schlüssel nicht geändert haben.
Fehlermeldung 2
Msg 6282, Ebene 16, Status 1, Zeile 1

Fehler bei ALTER ASSEMBLY, weil referenzierten Assemblys ändern. Liste der referenzierten Assemblys muss unverändert bleiben.

Upgrade oder Downgrade für die assembly

Hinweise
  • Diese Schritte upgrade oder Downgrade für eine Assembly in dem Szenario im Abschnitt "How to upgrade oder Downgrade für eine Assembly" beschrieben wurde.
  • Diese werden vorausgesetzt, dass die Versionen der beiden Assemblys 1.0.0.0 und die Assemblys sind in C# geschrieben. Wenn Sie diese Schritte versuchen Sie, die Assembly A und Assembly B auf Version 2.0.0.0 aktualisieren.
Gehen Sie folgendermaßen vor, um upgrade oder downgrade von Assembly A.
  1. Sichern von Assembly B Version 1.0.0.0 in einen Ordner.
  2. Ändern Sie und kompilieren Sie die Assembly B in Version 2.0.0.0.
  3. Verwenden Sie die Anweisung ALTER ASSEMBLY Assembly B in SQL Server 2005 aktualisieren.
  4. Ändern Sie und dann kompilieren Sie Assembly A Version 2.0.0.0. Wann werden auf Version 1.0.0.0 von Assembly B aus der Sicherung, die Sie in Schritt 1 erstellt haben. Verwenden Sie hierzu Csc.exe Compilertool mit der Befehlszeilenoption/Reference . Verwenden Sie beispielsweise den folgenden Befehl:
    csc/target: library/out:AssemblyADLL AssemblyAcs AssemblyInfo.cs/Reference: "BackupFolder\AssemblyBDLL"
    Hinweis Überprüfen Sie die Version der Assembly B in Assembly A-Metadaten mit dem Dienstprogramm Ildasm.exe öffnen Sie Assembly A. Dann überprüfen Sie die Metadaten für die referenzierte Assembly Abschnitt MANIFEST .
  5. Verwenden Sie die ALTER ASSEMBLY-Anweisung Assembly A in SQL Server 2005 aktualisieren.

Wie Sie eine Assembly mit starkem Namen heruntergestuft

Wenn Sie eine Assembly mit starkem Namen für ein CLR-Objekt verwenden, unterstützt SQL Server 2005 nicht mit der Anweisung ALTER ASSEMBLY Downgrade Assemblys. Wenn Sie versuchen, die Version einer Assembly mit der ALTER ASSEMBLY-Anweisung heruntergestuft, erhalten Sie eine Fehlermeldung, die der folgenden ähnelt:
Msg 6579, Ebene 16, Status 1, Zeile 1
Alter Assembly "Asm1, Version = 1.1.0.0, Kultur = Neutral, Publickeytoken = 3a52b896cff0513d, Processorarchitecture = Msil", "Asm1, Version = 1.0.0.0, Culture = Neutral, Publickeytoken = 3a52b896cff0513d, Processorarchitecture = Msil" ist keine kompatible Aktualisierung.
Wenn Sie eine Assembly mit starkem Namen herabstufen möchten, gehen Sie folgendermaßen vor:
  1. Löschen Sie alle Objekte, die von der Assembly abhängen.
  2. Löschen Sie die neuere Version der Assembly.
  3. Erstellen Sie die ältere Version der Assembly.
  4. Erstellen Sie alle erforderlichen Objekte, die von der Assembly abhängen.
Hinweis Sie können eine Assembly mit starkem Namen mithilfe der ALTER ASSEMBLY-Anweisung aktualisieren. Wenn bei die Aktualisierung eine referenzierte Assembly, müssen Sie die gleichen Schritte folgen, die im Abschnitt "Upgrade oder Downgrade einer Assembly" aufgeführt sind.

Referenzen


Weitere Informationen zu ALTER ASSEMBLY-Anweisung finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:Weitere Informationen zu dem Dienstprogramm Ildasm.exe finden Sie auf der folgenden MSDN-Website: