Common Language Runtime-Integration

Gilt für:SQL ServerAzure SQL Managed Instance

Microsoft SQL Server und Azure SQL Managed Instance ermöglichen es Ihnen, einige der Funktionen mit .NET-Sprachen mithilfe der CLR-Integration (Native Common Language Runtime) als SQL Server serverseitigen Modulen (Prozeduren, Funktionen und Trigger) zu implementieren. Die CLR-Komponente stellt verwalteten Code mit Diensten bereit, wie z. B. sprachübergreifende Integration, Codezugriffssicherheit, Verwaltung der Objektlebensdauer und Debug- und Profilerstellungsunterstützung. Für SQL Server Benutzer und Anwendungsentwickler bedeutet die CLR-Integration, dass Sie jetzt gespeicherte Prozeduren, Trigger, benutzerdefinierte Typen, benutzerdefinierte Funktionen (skalar und tabellenwert) und benutzerdefinierte Aggregatfunktionen mit jeder .NET Framework Sprache schreiben können, einschließlich Microsoft Visual Basic .NET und Microsoft Visual C#. SQL Server enthält die vorinstallierte .NET Framework Version 4.

Warnung

CLR verwendet die Codezugriffssicherheit (Code Access Security, CAS) im .NET Framework, die nicht länger als Sicherheitsbegrenzung unterstützt wird. Eine CLR-Assembly, die mit PERMISSION_SET = SAFE erstellt wurde, kann womöglich auf externe Systemressourcen zugreifen, nicht verwalteten Code aufrufen und sysadmin-Privilegien erwerben. Ab SQL Server 2017 (14.x) wird eine sp_configure-Option mit der Bezeichnung clr strict security eingeführt, um die Sicherheit von CLR-Assemblys zu erhöhen. clr strict security ist standardmäßig aktiviert und behandelt SAFE- und EXTERNAL_ACCESS-Assemblys so, als wären Sie als UNSAFE gekennzeichnet. Die Option clr strict security kann für die Abwärtskompatibilität deaktiviert werden, es wird jedoch nicht empfohlen. Microsoft empfiehlt, dass alle Assemblys durch ein Zertifikat oder einen asymmetrischen Schlüssel mit einem entsprechenden Anmeldenamen signiert werden, dem UNSAFE ASSEMBLY-Berechtigung für die Masterdatenbank gewährt wurde. Weitere Informationen finden Sie unter CLR Strict Security. SQL Server-Administratoren können auch Assemblys einer Liste von Assemblys hinzufügen, der die Datenbank-Engine vertrauen sollte. Weitere Informationen finden Sie unter sys.sp_add_trusted_assembly.

In diesem 6-minütigen Video erfahren Sie, wie Sie CLR in Azure SQL Managed Instance verwenden:

Verwendung von CLR-Modulen

Mit der CLR-Integration können Sie komplexe Features implementieren, die in .NET Framework verfügbar sind, z. B. reguläre Ausdrücke, Code für den Zugriff auf externe Ressourcen (Server, Webdienste, Datenbanken), benutzerdefinierte Verschlüsselung usw. Einige der Vorteile der serverseitigen CLR-Integration sind:

  • Ein besseres Programmiermodell. Die .NET Framework Sprachen sind in vielerlei Hinsicht reicher als Transact-SQL und bieten Konstrukte und Funktionen, die zuvor SQL Server Entwicklern nicht zur Verfügung stehen. Entwickler können zudem die leistungsfähigen Funktionen der .NET Framework-Bibliothek nutzen, die einen umfassenden Satz Klassen bereitstellt. Diese ermöglichen es, Programmierungsprobleme schnell und effizient zu lösen.

  • Verbesserte Sicherheit und Zuverlässigkeit. Verwalteter Code wird in einer von der Datenbank-Engine gehosteten Common Language Runtime-Umgebung ausgeführt. SQL Server nutzt dies, um eine sicherere und sicherere Alternative zu den erweiterten gespeicherten Prozeduren zu bieten, die in früheren Versionen von SQL Server verfügbar sind.

  • Fähigkeit, Datentypen und Aggregatsfunktionen zu definieren. Benutzerdefinierte Typen und benutzerdefinierte Aggregate sind zwei neue verwaltete Datenbankobjekte, die die Speicher- und Abfragefunktionen von SQL Server erweitern.

  • Rationalisierte Entwicklung durch eine standardisierte Umgebung. Die Datenbankentwicklung ist in zukünftige Versionen der Microsoft Visual Studio .NET-Entwicklungsumgebung integriert. Entwickler verwenden für das Entwickeln und Debuggen von Datenbankobjekten und Skripts dieselben Tools wie für das Schreiben von .NET Framework-Komponenten und -Diensten auf mittlerer Ebene oder Clientebene.

  • Potenziell verbesserte Leistung und Skalierbarkeit. In vielen Situationen sorgen die Kompilierungs- und Ausführungsmodelle der .NET Framework-Sprachen für eine verbesserte Leistungsfähigkeit gegenüber Transact-SQL.

SQL Server-Spracherweiterungen bieten eine alternative Ausführungsumgebung für Runtimes in der Nähe der Datenbank-Engine. Eine Erörterung der Unterschiede zwischen der SQL CLR und den SQL-Spracherweiterungen finden Sie unter Vergleichen der SQL Server-Spracherweiterungen mit der SQL CLR.

In der folgenden Tabelle sind die Themen dieses Abschnitts aufgeführt.

Übersicht über die CLR-Integration
Beschreibt die Arten von Objekten, die mithilfe der CLR-Integration erstellt werden können. Außerdem werden die Anforderungen für das Erstellen von Datenbankobjekten mithilfe der CLR-Integration überprüft.

Neuigkeiten bei der CLR-Integration
Beschreibt die neuen Funktionen in dieser Version.

Architektur der CLR-Integration
Beschreibt die Entwurfsziele der CLR-Integration.

Aktivieren der CLR-Integration
Beschreibt, wie die CLR-Integration aktiviert wird.

Weitere Informationen

Installieren des .NET Framework (nur SQL Server)
Leistungsfähigkeit der CLR-Integration