DetailPage-MSS-KB

Knowledge Base

Artikel-ID: 949080 - Geändert am: Montag, 7. Januar 2013 - Version: 1.0

 

Auf dieser Seite

Problembeschreibung

Szenarien Sie die folgenden.

Szenario 1

Sie erstellen eine common Language Runtime (CLR) Routine, die verweist ein Microsoft.NET Framework-Assembly. Die.NET Framework-Assembly ist nicht im dokumentiert. Knowledge Base-Artikel 922672. Klicken Sie dann, Sie installieren das.NET Framework 3.5 oder.NET Framework 2.0-basierte Hotfix.

Szenario 2

Sie erstellen eine Assembly, und klicken Sie anschließend registrieren Sie die Assembly in einer Microsoft SQL Server-Datenbank. Anschließend installieren Sie eine andere Version der Assembly im globalen Assemblycache (GAC).

Wenn Sie die CLR-Routine ausführen oder die Assembly aus einem der folgenden Szenarien in SQL Server verwenden, wird eine Fehlermeldung angezeigt, die der folgenden ähnelt:

Server: Msg 6522, Ebene 16, Status 2, Zeile 1
Eine.NET Framework Fehler beim Ausführen der benutzerdefinierten Routine oder ein Aggregat "Getsid":

System.IO.FileLoadException: Konnte Datei oder Assembly nicht geladen ' System.DirectoryServices, Version = 2.0.0.0, Culture = Neutral, PublicKeyToken = b03f5f7f11d50a3a "oder eine ihrer Abhängigkeiten. Assembly in host Informationsspeicher verfügt über eine unterschiedliche Signatur als Assembly im GAC. (Ausnahme von HRESULT: 0x80131050)

System.IO.FileLoadException:

Ursache

Wenn die CLR eine Assembly geladen wird, überprüft die CLR, dass die gleiche Assembly im GAC befindet. Wenn die gleiche Assembly im GAC befindet, überprüft die CLR , die Modul-Versions-IDs (MVIDs) dieser Assemblys überein. Wenn die MVIDs dieser Assemblys stimmen nicht überein, die Fehlermeldung wird angezeigt, die dieser Meldung der Der Abschnitt "Problembeschreibung" erwähnt.

Wenn eine Assembly kompiliert wird, die MVID von der Assembly-Änderungen. Daher, wenn Sie die.NET Framework, die.NET Framework-Assemblys aktualisieren haben Sie verschiedene MVIDs Da diese Assemblys neu kompiliert werden. Darüber hinaus If eine eigene Assembly zu aktualisieren, die Assembly ist neu kompiliert. Aus diesem Grund hat die Assembly auch einen anderen MVID.

Abhilfe

Problemumgehung 1

Um zu Szenario 1 im Abschnitt "Problembeschreibung" zu umgehen, müssen Sie manuell die.NET Framework-Assemblys in SQL Server aktualisieren. Zu diesem Zweck verwenden Sie die ALTER ASSEMBLY -Anweisung an Zeigen Sie auf den neuen Version der.NET Framework-Assembly in die folgenden Ordner:
%Windir%\Microsoft.NET\Framework\Version
HinweisVersion Stellt die Version von.NET Framework, die Sie installiert oder aktualisiert.

Problemumgehung 2

Um Szenarios zu umgehen 2 Zoll die "Symptome" section, verwenden Sie die ALTER ASSEMBLY -Anweisung so aktualisieren Sie die Assembly in die Datenbank.

Wenn das Problem weiterhin besteht Die Assembly aus der Datenbank löschen, nachdem Sie dies getan haben, und klicken Sie dann Registrieren der neue Version von Die assembly in der Datenbank.

Status

Microsoft hat bestätigt, dass dies ein Problem in den Microsoft-Produkten handelt, die aufgelistet werden im Abschnitt "Betrifft".

Weitere Informationen

Wir empfehlen nicht, dass Sie.NET Framework-Assemblys verwenden, die nicht im Knowledge Base-Artikel 922672 behandelt werden. Knowledge Base-Artikel 922672 Listet die Assemblys, die in der SQL Server CLR-gehostete Umgebung getestet werden.

Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
922672  (http://support.microsoft.com/kb/922672/ ) Unterstützungsrichtlinie für nicht getestete.NET Framework-Assemblys in der SQL Server CLR-gehostete Umgebung

Beschreibung des CLR-Routinen

CLR-Routinen einschließen die folgenden Objekte, die mithilfe von implementiert werden SQL Server-Integration mit.NET Framework-CLR:
  • Skalarwertige benutzerdefinierte Funktionen (Skalar UDFs)
  • Tabellenwert-User-defined Functions (TVFs)
  • Benutzerdefinierte Prozeduren (UDPs)
  • Benutzerdefinierte Trigger
  • Benutzerdefinierte Datentypen
  • Benutzerdefinierte Aggregate

Assemblys, nach der Installation die.NET Framework 3.5 zu aktualisieren

Nachdem Sie die.NET Framework 3.5 installiert haben, müssen Sie die ALTER verwenden. ASSEMBLY Anweisung aktualisieren Sie die folgenden Assemblys:
  • Accessibility.dll
  • AspNetMMCExt.dll
  • Cscompmgd.dll
  • IEExecRemote.dll
  • IEHost.dll-Assembly
  • IIEHost.dll
  • Microsoft.Build.Conversion.dll
  • Microsoft.Build.Engine.dll
  • Microsoft.Build.Framework.dll
  • Microsoft.Build.Tasks.dll
  • Microsoft.Build.Utilities.dll
  • Microsoft.CompactFramework.Build.Tasks.dll
  • Microsoft.JScript.dll
  • Microsoft.VisualBasic.Vsa.dll
  • Microsoft.Vsa.dll
  • Microsoft.Vsa.Vb.CodeDOMProcessor.dll
  • Microsoft_VsaVb.dll
  • Sysglobl.dll
  • System.Configuration.Install.dll
  • "System.Design.dll"
  • System.DirectoryServices.dll
  • System.DirectoryServices.Protocols.dll
  • System.Drawing.dll
  • System.Drawing.Design.dll
  • System.EnterpriseServices.dll
  • System.Management.dll
  • System.Messaging.dll hinzu
  • System.Runtime.Serialization.Formatters.Soap.dll
  • System.ServiceProcess.dll
  • System.Web.dll
  • "System.Web.Mobile.dll"
  • System.Web.RegularExpressions.dll
Diese Assemblys sind in den folgenden Ordner:
%Windir%\Microsoft.NET\Framework\v2.0.50727

Gewusst wie: beibehalten die Daten von benutzerdefinierten Datentypen, nach dem Löschen einer assembly

Wenn Sie eine Assembly, die ein benutzerdefinierten Datentyp von SQL Server verwendet löschen, können Sie eine der folgenden Methoden verwenden, um die Daten beizubehalten.

Wird davon gegangen Sie aus, dass der folgende Code das Szenario ist:
  • Sie erstellen eine Assembly, deren Namen gleich MyAssembly.dll.
  • Die Assemblyverweise MyAssembly die System.DirectoryServices.dll Assembly.
  • Sie haben einen benutzerdefinierten Datentyp, dessen Name ist MyDateTime.
  • Der MyDateTime -Datentyp verwendet MyAssembly.dll Assembly.
  • Sie erstellen eine Tabelle, deren Namen MyTable ist.
  • Der MyTable-Tabelle enthält die Daten der MyDateTime Daten Geben Sie ein.

Methode 1: Verwenden Sie das Dienstprogramm bcp.exe

  1. Verwenden Sie das Dienstprogramm Bcp.exe zusammen mit dem Schalter – n kopieren die Daten aus der Tabelle "MyTable" in eine Datei. Führen Sie z. B. die folgenden Befehl an einer Eingabeaufforderung ein:
    bcp MyDatabase.dbo.MyTable out C:\MyFile.bcp -n –SSQLServerName  -T
  2. In SQL Server Management Studio gehen Sie folgendermaßen vor:
    1. Löschen Sie die Tabelle MyTable.
    2. Legen Sie den MyDateTime -Datentyp.
    3. Legen Sie die System.DirectoryServices.dll Assembly.
    4. Löschen Sie die Assembly MyAssembly .
  3. In SQL Server Management Studio gehen Sie folgendermaßen vor:
    1. System.DirectoryServices.dll registrieren Assembly.
    2. Die MyAssembly -Assembly zu registrieren.
    3. Erstellen Sie den MyDateTime -Datentyp.
    4. Erstellen Sie eine neue Tabelle mit die gleichen Tabellenstruktur als die Tabelle MyTable.
  4. Verwenden Sie das Dienstprogramm Bcp.exe zusammen mit der Befehlszeilenoption – n , um Importieren Sie die Daten aus der Datei, in die Tabelle MyTable. Führen Sie z. B. die folgenden Befehl an einer Eingabeaufforderung ein:
    bcp MyDatabase.dbo.MyTable in C:\MyFile.bcp -n –SSQLServerName  -T

Methode 2: Verwenden Sie die INSERT... SELECT-Anweisung

Wird davon gegangen Sie aus, dass der MyDateTime -Datentyp 9 Bytes im Speicher belegt.
  1. Erstellen Sie eine neue Tabelle, die in SQL Server Management Studio enthält eine Spalte vom Datentyp VARBINARY(9) durch Ausführen des folgenden Anweisung:
    CREATE TABLE TempTable (c1 VARBINARY(9))
  2. Führen Sie den folgenden Einfügen... Wählen Sie Anweisung zum Füllen der TempTable: Tabelle:
    INSERT INTO TempTable SELECT CAST(c1 as VARBINARY(9)) FROM MyTable
  3. In SQL Server Management Studio gehen Sie folgendermaßen vor:
    1. Löschen Sie die Tabelle MyTable.
    2. Legen Sie den MyDateTime -Datentyp.
    3. Legen Sie die System.DirectoryServices.dll Assembly.
    4. Löschen Sie die Assembly MyAssembly .
  4. In SQL Server Management Studio gehen Sie folgendermaßen vor:
    1. System.DirectoryServices.dll registrieren Assembly.
    2. Die MyAssembly -Assembly zu registrieren.
    3. Erstellen Sie den MyDateTime -Datentyp.
    4. Erstellen Sie eine neue Tabelle mit die gleichen Tabellenstruktur als die Tabelle MyTable.
  5. Führen Sie den folgenden Einfügen... Wählen Sie Anweisung zum Füllen der MyTable-Tabelle:
    INSERT INTO MyTable SELECT c1 FROM TempTable

Informationsquellen

Weitere Informationen über die Version der Assembly finden Sie auf der folgende Microsoft Developer Network (MSDN)-Website:
http://msdn2.Microsoft.com/en-us/library/51ket42z (VS.80) .aspx (http://msdn2.microsoft.com/en-us/library/51ket42z(VS.80).aspx)
Für Weitere Informationen dazu, wie Sie eine Assembly zu aktualisieren, finden Sie auf der folgenden MSDN-Web Website:
http://msdn2.Microsoft.com/en-us/library/ms186711.aspx (http://msdn2.microsoft.com/en-us/library/ms186711.aspx)
Für Weitere Informationen zum Löschen einer Assembly finden Sie auf der folgenden MSDN-Web Website:
http://msdn2.Microsoft.com/en-us/library/ms177514.aspx (http://msdn2.microsoft.com/en-us/library/ms177514.aspx)
Für Weitere Informationen über das Registrieren einer Assembly in einer SQL Server 2005-Datenbank Besuchen Sie den folgenden MSDN-Website:
http://msdn2.Microsoft.com/en-us/library/ms189524.aspx (http://msdn2.microsoft.com/en-us/library/ms189524.aspx)
Für Weitere Informationen zum Dienstprogramm "Bcp.exe" finden Sie auf den folgenden MSDN-Website:
http://msdn2.Microsoft.com/en-us/library/ms162802.aspx (http://msdn2.microsoft.com/en-us/library/ms162802.aspx)

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
Keywords: 
kbexpertiseadvanced kbtshoot kbprb kbmt KB949080 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 949080  (http://support.microsoft.com/kb/949080/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Freigeben
Weitere Supportoptionen
Microsoft Community-Supportforen
Kontaktieren Sie uns direkt
Zertifizierten Partner finden
Microsoft Store
Folgen Sie uns: