Freigeben über


ClR-Integration (Common Language Runtime)

Gilt für: SQL Server Azure SQL Managed Instance

Mit SQL Server und Azure SQL verwaltete Instanz können Sie einige Der Funktionen mit .NET-Sprachen implementieren, die die Integration der nativen Common Language Runtime (CLR) als serverseitige SQL Server-Module (Prozeduren, Funktionen und Trigger) verwenden. 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 gespeicherte Prozeduren, Trigger, benutzerdefinierte Typen, benutzerdefinierte Funktionen (Skalar und Tabellenwert) und benutzerdefinierte Aggregatfunktionen mithilfe einer beliebigen .NET Framework-Sprache schreiben können, einschließlich Visual Basic .NET und Visual C#. SQL Server enthält die vorinstallierte .NET Framework-Version 4.

In diesem 6-minütigen Video wird gezeigt, wie Sie CLR in Azure SQL verwaltete Instanz verwenden:

Codezugriffssicherheit wird nicht mehr unterstützt

CLR verwendet die Codezugriffssicherheit (Code Access Security, CAS) im .NET Framework, die nicht länger als Sicherheitsbegrenzung unterstützt wird. Eine CLR-Assembly, die erstellt wurde, PERMISSION_SET = SAFE kann möglicherweise auf externe Systemressourcen zugreifen, nicht verwalteten Code aufrufen und sysadmin-Berechtigungen erwerben. In SQL Server 2017 (14.x) und höheren Versionen verbessert die sp_configure Option clr strict security die Sicherheit von CLR-Assemblys. clr strict security ist standardmäßig aktiviert und behandelt SAFE- und EXTERNAL_ACCESS-Assemblys so, als wären Sie als UNSAFE gekennzeichnet. Die clr strict security Option kann aus Gründen der Abwärtskompatibilität deaktiviert werden, wird jedoch nicht empfohlen.

Es wird empfohlen, alle Assemblys anhand eines Zertifikats oder asymmetrischen Schlüssels mit einer entsprechenden Anmeldung zu signieren, die in der master Datenbank berechtigungen erteilt UNSAFE ASSEMBLY wurde. 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.

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 umfangreicher als Transact-SQL und bieten Konstrukte und Funktionen, die zuvor für SQL Server-Entwickler nicht verfügbar waren. Entwickler können auch die Leistungsfähigkeit der .NET Framework-Bibliothek nutzen, die einen umfangreichen Satz von Klassen bereitstellt, die verwendet werden können, um Programmierprobleme schnell und effizient zu lösen.

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

  • Möglichkeit zum Definieren von Datentypen und Aggregatfunktionen. Benutzerdefinierte Typen und benutzerdefinierte Aggregate sind zwei neue verwaltete Datenbankobjekte, die die Speicher- und Abfragefunktionen von SQL Server erweitern.

  • Optimierte 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.

  • Potenzial für 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 stellen eine alternative Ausführungsumgebung für Laufzeiten in der Nähe des Datenbankmoduls bereit. 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 Artikel in diesem Abschnitt aufgeführt.

Artikel Beschreibung
Übersicht über die CLR-Integration Beschreibt die Arten von Objekten, die mithilfe der CLR-Integration erstellt werden können. Überprüft außerdem die Anforderungen für das Erstellen von Datenbankobjekten mithilfe der CLR-Integration.
CLR-Integration – Neuigkeiten Beschreibt die neuen Funktionen in dieser Version.
CLR-Integrationsarchitektur – gehostete CLR-Umgebung Beschreibt die Entwurfsziele der CLR-Integration.
Aktivieren der CLR-Integration Beschreibt, wie die CLR-Integration aktiviert wird.