Implementieren von Assemblys

Gilt für: SQL Server

Dieser Artikel enthält Informationen zu den folgenden Bereichen, die Ihnen bei der Implementierung und Arbeit mit Assemblys in der Datenbank helfen:

  • 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-Anweisung CREATE ASSEMBLY 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.

Ändern von Assemblys

Assemblys werden in SQL Server mithilfe der Transact-SQL-Anweisung ALTER ASSEMBLY oder in SQL Server Management Studio mithilfe des Assembly Assisted Editor geändert.

Sie können eine Assembly ändern, wenn Sie die folgenden Aktionen ausführen möchten:

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

  • Ä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, auch wenn sie in die Datenbank hochgeladen werden. 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.

Ablegen, Deaktivieren und Aktivieren von Assemblys

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

Standardmäßig werden alle Assemblys, die in SQL Server erstellt werden, von der Ausführung deaktiviert. Sie können die clr enabled Option der sp_configure gespeicherten Systemprozedur verwenden, um die Ausführung aller Assemblys zu deaktivieren oder zu aktivieren, die in SQL Server hochgeladen werden. Durch Das Deaktivieren der Assemblyausführung wird verhindert, dass ClR-Funktionen (Common Language Runtime), gespeicherte Prozeduren, Trigger, Aggregate und benutzerdefinierte Typen ausgeführt werden, und alle derzeit ausgeführten Funktionen werden beendet. Durch das Deaktivieren der Assemblyausführung wird die Möglichkeit zum Erstellen, Ändern oder Ablegen von Assemblys nicht deaktiviert. Weitere Informationen finden Sie unter Serverkonfiguration: clr enabled.

Weitere Informationen finden Sie unter sp_configure.

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.

Wenn Sie eine Assembly ändern müssen, müssen Sie eine ALTER ASSEMBLY Anweisung ausgeben, um die Assembly in der Datenbank zu aktualisieren. Diese Anweisung aktualisiert die Assembly auf die neueste Kopie von .NET Framework-Modulen, 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. Insbesondere müssen Sie angeben WITH UNCHECKED DATA , ob eine der folgenden Elemente vorhanden ist:

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

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

Achtung

Wenn WITH UNCHECKED DATA nicht angegeben, versucht SQL Server, die Ausführung zu verhindern ALTER ASSEMBLY , wenn sich die neue Assemblyversion auf vorhandene Daten in Tabellen, Indizes oder anderen persistenten Websites auswirkt. 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. Achten Sie beim Ausführen ALTER ASSEMBLY darauf, dass kein Konflikt zwischen dem Ergebnis eines Ausdrucks und einem Wert besteht, der auf diesem ausdrucksbasierten Ausdruck basiert, der in der Assembly gespeichert ist.

Nur Elemente der db_owner und db_ddlowner festen Datenbankrolle können mithilfe der WITH UNCHECKED DATA Klausel ausgeführt ALTER ASSEMBLY werden.

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 die Ausführung DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS für jede Tabelle mit deaktivierten Daten aus. Wenn DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS ein Fehler auftritt, müssen Sie entweder die Tabellenzeilen löschen, die ungültig sind, oder den Assemblycode so ändern, dass Probleme behoben werden, und dann weitere ALTER ASSEMBLY Anweisungen ausgeben.

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

Interaktionen mit computerweiten Richtlinien für die 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.

Weitere Informationen finden Sie unter ALTER ASSEMBLY.