Benutzerdefinierte CLR-Typen

Gilt für:yesSQL Server (alle unterstützten Versionen)

SQL Server bietet Ihnen die Möglichkeit, Datenbankobjekte zu erstellen, die mit einer Assembly programmiert werden, 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 Möglichkeit zum Ausführen von CLR-Code ist standardmäßig in SQL Server auf "AUS" festgelegt. Die CLR kann mithilfe der gespeicherten sp_configure Systemprozedur aktiviert werden.

Ab SQL Server 2005 (9.x) können Sie benutzerdefinierte Typen (UDTs) verwenden, um das Skalartypsystem 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. Dazu gehören Visual C# und Visual Basic .NET. 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. Nachdem eine Assembly in eine Hostdatenbank geladen wurde, verwenden Sie die Transact-SQL CREATE TYPE-Anweisung, um ein UDT zu erstellen und die Member der Klasse oder Struktur als Member des 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 systemeigenen 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 als gespeicherte 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, wie Sie mit UDTs mit dem .NET Framework Datenanbieter für SQL Server in ADO.NET arbeiten.