Benutzerdefinierte CLR-Typen

Gilt für:SQL Server

SQL Server gibt Ihnen die Möglichkeit, Datenbankobjekte zu erstellen, die für eine Assembly programmiert sind, die in der .NET Framework Common Language Runtime (CLR) erstellt wurde. Zu den Datenbankobjekten, die das umfangreiche Programmierungsmodell der CLR nutzen können, zählen Trigger, gespeicherte Prozeduren, Funktionen, Aggregatfunktionen und Typen.

Hinweis

Die Fähigkeit zum Ausführen von CLR-Code ist in SQL Server standardmäßig auf OFF festgelegt. Die CLR kann mithilfe der sp_configure gespeicherten Systemprozedur aktiviert werden.

Ab SQL Server 2005 (9.x) können Sie benutzerdefinierte Typen (UDTs) verwenden, um das skalare Typsystem des Servers zu erweitern und die Speicherung von CLR-Objekten in einer SQL Server Datenbank zu ermöglichen. UDTs können mehrere Elemente enthalten und verschiedene Verhaltensweisen zeigen, wodurch sie sich von den herkömmlichen Aliasdatentypen unterscheiden, die nur aus einem SQL Server-Systemdatentyp bestehen.

Da das System auf UDTs als Ganzes zugreift, kann sich ihre Verwendung für komplexe Datentypen negativ auf die Leistung auswirken. Komplexe Daten werden im Allgemeinen am besten mit herkömmlichen Zeilen und Tabellen modelliert. UDTs in SQL Server eignen sich gut für Folgendes:

  • Datum, Zeit, Währung und erweiterte numerische Typen

  • Geospatial-Anwendungen

  • Codierte oder verschlüsselte Daten

Der Prozess der Entwicklung von UDTs in SQL Server besteht aus den folgenden Schritten:

  1. Codieren und erstellen Sie die Assembly, die den UDT definiert. UDTs werden in einer beliebigen, von der .NET Framework-CLR (Common Language Runtime) unterstützten Sprache definiert, die überprüfbaren Code generiert. Dies schließt Visual C# und Visual Basic .NET ein. Die Daten werden in Feldern und Eigenschaften einer .NET Framework-Klasse oder -Struktur verfügbar gemacht. Das Verhalten wird durch die Methoden der Klasse oder Struktur definiert.

  2. Registrieren Sie die Assembly. UDTs können über die Visual Studio-Benutzeroberfläche in einem Datenbankprojekt oder mithilfe der Transact-SQL CREATE ASSEMBLY-Anweisung bereitgestellt werden, die die Assembly mit der Klasse oder Struktur in eine Datenbank kopiert.

  3. Erstellen Sie den UDT in SQL Server. Sobald eine Assembly in eine Hostdatenbank geladen wurde, verwenden Sie die Transact-SQL CREATE TYPE-Anweisung, um eine UDT zu erstellen und die Member der Klasse oder Struktur als Member der UDT verfügbar zu machen. UDTs sind nur im Kontext einer einzelnen Datenbank vorhanden und weisen nach der Registrierung keine Abhängigkeiten mehr von den externen Dateien auf, aus denen sie erstellt wurden.

    Hinweis

    Vor SQL Server 2005 (9.x) wurden UDTs, die aus .NET Framework Assemblys erstellt wurden, nicht unterstützt. Sie können jedoch weiterhin SQL Server Aliasdatentypen verwenden, indem Sie sp_addtype verwenden. Die CREATE TYPE-Syntax kann zum Erstellen von nativen SQL Server benutzerdefinierten Datentypen und UDTs verwendet werden.

  4. Erstellen von Tabellen, Variablen oder Parametern mithilfe des UDT Ab SQL Server 2005 (9.x) kann ein benutzerdefinierter Typ als Spaltendefinition einer Tabelle, als Variable in einem Transact-SQL-Batch oder als Argument einer Transact-SQL-Funktion oder einer gespeicherten Prozedur verwendet werden.

In diesem Abschnitt

Erstellen eines User-Defined-Typs
Beschreibt das Erstellen von UDTs.

Registrieren benutzerdefinierter Typen in SQL Server
Beschreibt, wie UdTs in SQL Server registriert und verwaltet werden.

Arbeiten mit benutzerdefinierten Typen in SQL Server
Beschreibt das Erstellen von Abfragen mit UDTs.

Zugreifen auf benutzerdefinierte Typen in ADO.NET
Beschreibt das Arbeiten mit UDTs mithilfe des .NET Framework-Datenanbieters für SQL Server in ADO.NET.