Implementieren von Assemblys
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
In SQL Server werden Assemblys mit der Transact-SQL-Anweisung CREATE ASSEMBLY erstellt. In SQL Server Management Studio mit dem Assembly-Editorassistenten. Darüber hinaus wird beim Bereitstellen eines SQL Server-Projekts in Microsoft Visual Studio eine Assembly in der Datenbank registriert, die für das Projekt angegeben war. Weitere Informationen finden Sie unter Bereitstellen von CLR-Datenbankobjekten.
Erstellen einer Assembly mit Transact-SQL
Erstellen einer Assembly mit SQL Server Management Studio
Ändern von Assemblys
In SQL Server werden Assemblys mit der Transact-SQL-Anweisung ALTER ASSEMBLY geändert. In SQL Server Management Studio mit dem Assembly Assisted Editor. 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 unter Verwalten von Assemblyversionen weiter unten in diesem Thema.
Ändern des Berechtigungssatzes der Assembly. Weitere Informationen finden Sie unter Entwerfen von Assemblys.
Ändern der Sichtbarkeit der Assembly. Sichtbare Assemblys sind in SQL Server für Verweise verfügbar. Nicht sichtbare Assemblys sind nicht verfügbar, dies gilt auch dann, wenn sie in die Datenbank hochgeladen wurden. Assemblys, die in eine Instanz von SQL Server hochgeladen wurden, sind standardmäßig 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 mit der Transact-SQL-Anweisung DROP ASSEMBLY oder mit SQL Server Management Studio gelöscht.
Löschen einer Assembly mit Transact-SQL
Löschen einer Assembly mit SQL Server Management Studio
Standardmäßig ist die Ausführung aller in SQL Server erstellten Assemblys deaktiviert. Mit der Option CLR-fähig oder mit der gespeicherten Systemprozedur sp_configure können Sie die Ausführung aller in SQL Server hochgeladenen Assemblys deaktivieren bzw. aktivieren. 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ähig (Serverkonfigurationsoption).
Deaktivieren und Aktivieren der Assemblyausführung
Verwalten von Assemblyversionen
Wenn eine Assembly in eine SQL Server-Instanz hochgeladen wird, wird es in den Datenbanksystemkatalogen gespeichert und verwaltet. Alle in Microsoft .NET Framework an der Definition der Assembly vorgenommenen Änderungen müssen in die im Datenbankkatalog gespeicherte Assembly übertragen werden.
Zum Ändern einer Assembly müssen Sie eine ALTER ASSEMBLY-Anweisung ausgeben, die die Assembly in der Datenbank aktualisiert. Dadurch wird die Assembly mit der aktuellsten Kopie der .NET Framework-Module aktualisiert, die ihre Implementierung enthalten.
Mit der WITH UNCHECKED DATA-Klausel der ALTER ASSEMBLY-Anweisung wird SQL Server angewiesen, auch die Assemblys zu aktualisieren, von denen in der Datenbank persistente Daten abhängen. WITH UNCHECKED DATA müssen Sie insbesondere dann angeben, wenn folgende Bedingungen erfüllt sind:
Persistente berechnete Spalten, die über Transact-SQL-Funktionen oder -Methoden entweder direkt oder indirekt auf Methoden der Assembly verweisen.
Spalten eines CLR-benutzerdefinierten Typs, die von der Assembly abhängen, deren Typ ein UserDefined-Serialisierungsformat (Nicht-Native) implementiert.
![]() |
---|
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 andere persistente Sites hat. SQL Server garantiert jedoch nicht, dass berechnete Spalten, Indizes, indizierte Sichten oder Ausdrücke mit den zugrunde liegenden Routinen und Typen konsistent sein werden, 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 festen Datenbankrollen db_owner und db_ddlowner können "run ALTER ASSEMBLY" mit der WITH UNCHECKED DATA-Klausel ausführen.
SQL Server sendet eine Meldung an das Windows-Anwendungsereignisprotokoll, die angibt, dass die Assembly mit ungeprüften Daten in den Tabellen geändert wurde. SQL Server markiert anschließend alle Tabellen mit Daten, die von der Assembly abhängen, als ungeprüft. Die Spalte has_unchecked_assembly_data der sys.tables-Katalogsicht enthält für Tabellen mit nicht überprüften Daten den Wert 1 und den Wert 0 für Tabellen ohne nicht überprüfte Daten.
Um die Integrität der nicht überprüften Daten aufzulösen, müssen Sie für jede Tabelle mit nicht überprüften Daten DBCC CHECKTABLE ausführen. Falls DBCC CHECKTABLE fehlerhaft verläuft, müssen Sie entweder die ungültigen Tabellenzeilen löschen oder den Assemblycode ändern, um die Probleme zu beseitigen, und dann eine weitere ALTER ASSEMBLY-Anweisung ausgeben.
ALTER ASSEMBLY ändert die Assemblyversion. Das Culture- und das öffentliche Schlüsseltoken der Assembly bleiben unverändert. In SQL Server ist es nicht zulässig, verschiedene Versionen einer Assembly mit demselben Namen, öffentlichen Schlüssel oder derselben Kultur zu registrieren.
Interaktionen mit der für den gesamten Computer geltenden Richtlinie zur Versionsbindung
Wenn in SQL Server gespeicherte Verweise auf Assemblys mit der Herausgeberrichtlinie oder einer für den gesamten Computer geltenden Administratorrichtlinie an spezifische Versionen umgeleitet werden, müssen Sie eine der folgenden Maßnahmen ergreifen:
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.
Anderenfalls verursacht das Laden einer neuen Assemblyversion in die SQL Server-Instanz einen Fehler.
Aktualisieren der Version einer Assembly
Siehe auch
Konzepte
Abrufen von Informationen zu Assemblys