Share via


Assemblys: Implementierung

Gilt für:SQL Server

Dieser Abschnitt enthält Informationen zu folgenden Themen, die Sie hilfreich beim Implementieren und Arbeiten mit Assemblys in der Datenbank sind:

  • Erstellen von Assemblys

  • Ändern von Assemblys

  • Löschen, Deaktivieren und Aktivieren von Assemblys

  • Verwalten von Assemblyversionen

Erstellen von Assemblys

Assemblys werden in SQL Server mithilfe der Create ASSEMBLY-Anweisung von Transact-SQL oder in der SQL Server Management Studio mithilfe des assemblyunterstützten Editors erstellt. Darüber hinaus registriert die Bereitstellung eines SQL Server Project in Microsoft Visual Studio eine Assembly in der Datenbank, die für das Projekt angegeben wurde. Weitere Informationen finden Sie unter Deploying CLR Database Objects.

Erstellen einer Assembly mit Transact-SQL

Erstellen einer Assembly mit SQL Server Management Studio

Ändern von Assemblys

Assemblys werden in SQL Server mithilfe der Alter ASSEMBLY-Anweisung von Transact-SQL oder in SQL Server Management Studio mithilfe des assemblyunterstützten Editors geändert. Eine Assembly können Sie wie folgt ändern:

  • Ändern der Implementierung der Assembly durch Hochladen einer neueren Version der Binärdateien der Assembly. Weitere Informationen finden Sie weiter unten in diesem Thema unter Verwalten von Assemblyversionen .

  • Ändern des Berechtigungssatzes der Assembly. Weitere Informationen finden Sie unter Entwerfen von Assemblys.

  • Ändern der Sichtbarkeit der Assembly. Sichtbare Assemblys stehen zum Verweisen in SQL Server zur Verfügung. Nicht sichtbare Assemblys sind nicht verfügbar, dies gilt auch dann, wenn sie in die Datenbank hochgeladen wurden. Standardmäßig sind Assemblys, die in eine instance von SQL Server hochgeladen werden, sichtbar.

  • Hinzufügen oder Löschen einer der Assembly zugeordneten Debug- oder Quelldatei.

Ändern einer Assembly mit Transact-SQL

Ändern einer Assembly mit SQL Server Management Studio

Löschen, Deaktivieren und Aktivieren von Assemblys

Assemblys werden mithilfe der Drop ASSEMBLY-Anweisung oder SQL Server Management Studio von Transact-SQL gelöscht.

Löschen einer Assembly mit Transact-SQL

Löschen einer Assembly mit SQL Server Management Studio

Standardmäßig werden alle Assemblys, die in SQL Server erstellt werden, nicht ausgeführt. Sie können die Option clr enabled der sp_configure gespeicherten Systemprozedur verwenden, um die Ausführung aller Assemblys zu deaktivieren oder zu aktivieren, die in SQL Server hochgeladen werden. Die Deaktivierung der Assemblyausführung verhindert die Ausführung von CLR-Funktionen (Common Language Runtime), gespeicherter Prozeduren, Trigger, Aggregate und benutzerdefinierter Typen – gerade ausgeführte werden beendet. Die Deaktivierung der Assemblyausführung deaktiviert nicht die Möglichkeit, Assemblys zu erstellen, zu ändern oder zu löschen. Weitere Informationen finden Sie unter Clr-fähige Serverkonfigurationsoption.

Deaktivieren und Aktivieren der Assemblyausführung

Verwalten von Assemblyversionen

Wenn eine Assembly in eine instance SQL Server hochgeladen wird, wird die Assembly in den Datenbanksystemkatalogen gespeichert und verwaltet. Alle Änderungen, die an der Definition der Assembly im Microsoft .NET Framework vorgenommen werden, sollten an die Assembly weitergegeben werden, die im Datenbankkatalog gespeichert ist.

Zum Ändern einer Assembly müssen Sie eine ALTER ASSEMBLY-Anweisung ausgeben, die die Assembly in der Datenbank aktualisiert. Dadurch wird die Assembly auf die neueste Kopie von .NET Framework Modulen aktualisiert, die ihre Implementierung enthalten.

Die WITH UNCHECKED DATA-Klausel der ALTER ASSEMBLY-Anweisung weist SQL Server an, auch die Assemblys zu aktualisieren, von denen persistente Daten in der Datenbank abhängig sind. WITH UNCHECKED DATA müssen Sie insbesondere dann angeben, wenn folgende Bedingungen erfüllt sind:

  • Gespeicherte berechnete Spalten, die entweder direkt oder indirekt über Transact-SQL-Funktionen oder -Methoden auf Methoden in der Assembly verweisen.

  • Spalten eines CLR-benutzerdefinierten Typs, die von der Assembly abhängen, wobei der Typ ein Serialisierungsformat vom Typ UserDefined (nicht Native) implementiert.

Achtung

Wird WITH UNCHECKED DATA nicht angegeben, versucht SQL Server die Ausführung von ALTER ASSEMBLY zu verhindern, wenn die neue Assemblyversion Auswirkungen auf vorhandene Daten in Tabellen, Indizes oder anderen persistenten Standorten hat. SQL Server garantiert jedoch nicht, dass berechnete Spalten, Indizes, indizierte Sichten oder Ausdrücke mit den zugrunde liegenden Routinen und Typen konsistent sind, wenn die CLR-Assembly aktualisiert wird. Gehen Sie beim Ausführen von ALTER ASSEMBLY mit Vorsicht vor, um sicherzustellen, dass es keine fehlende Übereinstimmung zwischen dem Ergebnis eines Ausdrucks und einem auf diesem Ausdruck basierenden Wert, der in der Assembly gespeichert ist, gibt.

Nur Mitglieder der db_owner und db_ddlowner festen Datenbankrolle können ALTER ASSEMBLY mithilfe der WITH UNCHECKED DATA-Klausel ausführen.

SQL Server sendet eine Meldung an das Ereignisprotokoll der Windows-Anwendung, dass die Assembly mit nicht überprüften Daten in den Tabellen geändert wurde. SQL Server markiert dann alle Tabellen, die von der Assembly abhängige Daten enthalten, als nicht überprüfte Daten. Die has_unchecked_assembly_data Spalte der sys.tables-Katalogsicht enthält den Wert 1 für Tabellen, die nicht überprüfte Daten enthalten, und 0 für Tabellen ohne ungeprüfte Daten.

Um die Integrität nicht überprüfter Daten aufzulösen, führen Sie DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS für jede Tabelle aus, die nicht überprüfte Daten enthält. Wenn DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS fehlschlägt, müssen Sie entweder die ungültigen Tabellenzeilen löschen oder den Assemblycode ändern, um Probleme zu beheben, und dann zusätzliche ALTER ASSEMBLY-Anweisungen ausstellen.

Mit ALTER ASSEMBLY wird die Assemblyversion geändert. Die Kultur und das Token für den öffentlichen Schlüssel der Assembly bleiben unverändert. SQL Server lässt die Registrierung verschiedener Versionen einer Assembly mit demselben Namen, derselben Kultur und demselben öffentlichen Schlüssel nicht zu.

Interaktionen mit der für den gesamten Computer geltenden Richtlinie zur Versionsbindung

Wenn Verweise auf in SQL Server gespeicherte Assemblys mithilfe der Herausgeberrichtlinie oder der computerweiten Administratorrichtlinie an bestimmte Versionen umgeleitet werden, müssen Sie eine der folgenden Aktionen ausführen:

  • Stellen Sie sicher, dass sich die neue Version, auf die umgeleitet wird, in der Datenbank befindet.

  • Ändern Sie alle Anweisungen der externen Richtliniendatei des Computers oder der Herausgeberrichtlinie, damit diese auf die in der Datenbank vorhandene Version verweisen.

Andernfalls schlägt der Versuch fehl, eine neue Assemblyversion in die instance von SQL Server zu laden.

Aktualisieren der Version einer Assembly

Weitere Informationen

Assemblys (Database Engine)
Abrufen von Informationen zu Assemblys