Freigeben über


Erstellen von CLR-Funktionen

Sie können ein Datenbankobjekt in einer Instanz von SQL Server erstellen, die in einer Assembly programmiert ist, die in der Common Language Runtime (CLR) von Microsoft .NET Framework erstellt wurde. Datenbankobjekte, die das umfassende Programmiermodell nutzen können, das von der Common Language Runtime bereitgestellt wird, umfassen Aggregatfunktionen, Funktionen, gespeicherte Prozeduren, Trigger und Typen.

Das Erstellen einer CLR-Funktion in SQL Server umfasst die folgenden Schritte:

  • Definieren Sie die Funktion als statische Methode einer Klasse in einer sprache, die von .NET Framework unterstützt wird. Weitere Informationen zum Programmieren von Funktionen in der Common Language Runtime finden Sie unter CLR User-Defined Functions. Kompilieren Sie dann die Klasse, um eine Assembly in .NET Framework mithilfe des entsprechenden Sprachcompilers zu erstellen.

  • Registrieren Sie die Assembly in SQL Server mithilfe der CREATE ASSEMBLY-Anweisung. Weitere Informationen zu Assemblys in SQL Server finden Sie unter Assemblys (Database Engine).For more information about assemblies in SQL Server, see Assemblies (Database Engine).

  • Erstellen Sie die Funktion, die mithilfe der CREATE FUNCTION-Anweisung auf die registrierte Assembly verweist.

Hinweis

Durch die Bereitstellung eines SQL Server-Projekts in MicrosoftVisual Studio wird eine Assembly in der Datenbank registriert, die für das Projekt angegeben wurde. Durch die Bereitstellung des Projekts werden auch CLR-Funktionen in der Datenbank für alle Methoden erstellt, die mit dem SqlFunction Attribut versehen sind. Weitere Informationen finden Sie unter Deploying CLR Database Objects.

Hinweis

Die Fähigkeit von SQL Server, CLR-Code auszuführen, ist standardmäßig deaktiviert. Sie können Datenbankobjekte erstellen, ändern und ablegen, die auf verwaltete Codemodule verweisen. Diese Verweise werden jedoch nicht in SQL Server ausgeführt, es sei denn, die aktivierte Clr-Option wird mithilfe von sp_configure (Transact-SQL) aktiviert.

Zugreifen auf externe Ressourcen

CLR-Funktionen können für den Zugriff auf externe Ressourcen wie Dateien, Netzwerkressourcen, Webdienste, andere Datenbanken (einschließlich Remoteinstanzen von SQL Server) verwendet werden. Dies kann mithilfe verschiedener Klassen im .NET Framework erreicht werden, wie z. B. System.IO, System.WebServices, System.Sql und so weiter. Die Assembly, die solche Funktionen enthält, sollte mindestens mit EXTERNAL_ACCESS-Berechtigungen dazu konfiguriert werden. Weitere Informationen finden Sie unter CREATE ASSEMBLY (Transact-SQL). Der vom SQL Client verwaltete Anbieter kann für den Zugriff auf Remoteinstanzen von SQL Server verwendet werden. Loopbackverbindungen mit dem ursprünglichen Server werden jedoch in CLR-Funktionen nicht unterstützt.

So erstellen, ändern oder ablegen Sie Assemblys in SQL Server

So erstellen Sie eine CLR-Funktion

Zugreifen auf nativen Code

CLR-Funktionen können verwendet werden, um über PInvoke aus verwaltetem Code auf nativen (nicht verwalteten) Code zuzugreifen, z. B. Code, der in C oder C++ geschrieben wurde (siehe Aufrufen nativer Funktionen aus verwaltetem Code für Details). Auf diese Weise können Sie Legacycode als CLR-UDFs wiederverwenden oder leistungskritische UDFs in systemeigenem Code schreiben. Dies erfordert die Verwendung einer UNSAFE-Assembly. Informationen zur Verwendung unsicherer Assemblys finden Sie unter CLR-Integrationscodezugriffssicherheit .

Siehe auch

Erstellen benutzerdefinierter Funktionen (Datenbankmodul)
Erstellen von benutzerdefinierten Aggregaten
Ausführen benutzerdefinierter Funktionen
Benutzerdefinierte Funktionen anzeigen
Konzepte für die Integrationsprogrammierung von Common Language Runtime (CLR)