Teilen über


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

  • Ablegen, Deaktivieren und Aktivieren von Assemblys

  • Verwalten von Assemblyversionen

Erstellen von Assemblys

Assemblys werden in SQL Server mithilfe der Transact-SQL CREATE ASSEMBLY-Anweisung oder im SQL Server Management Studio mithilfe des Assembly Assisted Editor erstellt. Darüber hinaus registriert die Bereitstellung eines SQL Server-Projekts 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.

So erstellen Sie eine Assembly mithilfe von Transact-SQL

So erstellen Sie eine Assembly mithilfe von SQL Server Management Studio

Ändern von Assemblys

Assemblys werden in SQL Server mithilfe der Transact-SQL ALTER ASSEMBLY-Anweisung oder in SQL Server Management Studio mithilfe des Assembly Assisted Editor 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 für verweise 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 Instanz von SQL Server hochgeladen wurden, sichtbar.

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

So ändern Sie eine Assembly mithilfe von Transact-SQL

So ändern Sie eine Assembly mithilfe von SQL Server Management Studio

Löschen, Deaktivieren und Aktivieren von Assemblys

Assemblys werden mithilfe der Transact-SQL DROP ASSEMBLY-Anweisung oder sql Server Management Studio abgelegt.

So legen Sie eine Assembly mithilfe von Transact-SQL ab

So legen Sie eine Assembly mithilfe von SQL Server Management Studio ab

Standardmäßig werden alle Assemblys, die in SQL Server erstellt werden, von der Ausführung deaktiviert. Sie können die Option "clr enabled " der gespeicherten sp_configure 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-aktivierte Serverkonfigurationsoption.

So deaktivieren und aktivieren Sie die Assemblyausführung

Verwalten von Assemblyversionen

Wenn eine Assembly in eine Sql Server-Instanz hochgeladen wird, wird die Assembly in den Datenbanksystemkatalogen gespeichert und verwaltet. Alle Änderungen, die an der Definition der Assembly im Microsoft .NET Framework vorgenommen wurden, 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, selbst die Assemblys zu aktualisieren, von denen beibehaltene 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 auf Methoden in der Assembly verweisen, entweder direkt oder indirekt, über Transact-SQL-Funktionen oder -Methoden.

  • 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 Ansichten 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 Member 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 im Ereignisprotokoll der Windows-Anwendung, dass die Assembly mit deaktivierten Daten in den Tabellen geändert wurde. SQL Server markiert dann alle Tabellen, die Daten enthalten, die von der Assembly abhängig sind, als deaktivierte Daten. Die has_unchecked_assembly_data Spalte der Sys.tables-Katalogansicht enthält den Wert 1 für Tabellen, die deaktivierte Daten enthalten, und 0 für Tabellen ohne deaktivierte Daten.

Um die Integrität deaktivierter Daten zu beheben, führen Sie DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS für jede Tabelle mit deaktivierten Daten aus. Wenn DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS fehlschlägt, müssen Sie entweder die tabellenzeilen löschen, die ungültig sind, oder den Assemblycode ändern, um Probleme zu beheben, und dann zusätzliche ALTER ASSEMBLY-Anweisungen ausstellen.

Mit ALTER ASSEMBLY wird die Assemblyversion geändert. Das Kultur- und öffentliche Schlüsseltoken der Assembly bleiben identisch. SQL Server lässt die Registrierung verschiedener Versionen einer Assembly mit demselben Namen, der gleichen Kultur und dem öffentlichen Schlüssel nicht zu.

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

Wenn Verweise auf assemblys, die in SQL Server gespeichert sind, mithilfe der Herausgeberrichtlinie oder computerweiten Administratorrichtlinie zu bestimmten 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 ein Versuch, eine neue Assemblyversion in die Instanz von SQL Server zu laden, fehl.

So aktualisieren Sie die Version einer Assembly

Weitere Informationen

Assemblys (Database Engine)
Abrufen von Informationen zu Assemblys