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.
- Mit Transact-SQL: CREATE ASSEMBLY (Transact-SQL)
- Mit SQL Server Management Studio: Assemblys – Eigenschaften
Ä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.
- Mit Transact-SQL: ALTER ASSEMBLY (Transact-SQL)
- Mit SQL Server Management Studio: Assemblys – Eigenschaften
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.
- Mit Transact-SQL: DROP ASSEMBLY (Transact-SQL)
- Mit SQL Server Management Studio: Objekte löschen
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.