Freigeben über


Benutzerdefinierte CLR-Typen

Gilt für: SQL Server

SQL Server bietet Ihnen die Möglichkeit, Datenbankobjekte zu erstellen, die mit einer Assembly programmiert werden, die in der Common Language Runtime (CLR) von .NET Framework 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 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 Verhaltensweisen aufweisen und diese von den herkömmlichen Alias-Datentypen unterscheiden, die aus einem einzelnen 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. Code und Erstellen der Assembly, die 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 das 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 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-Alias-Datentypen verwenden , indem Sie sp_addtype verwenden. Die CREATE TYPE-Syntax kann zum Erstellen von benutzerdefinierten SQL Server-Datentypen und UDTs verwendet werden.

  4. Erstellen Von Tabellen, Variablen oder Parametern mithilfe von 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 benutzerdefinierten 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 .NET Framework Datenanbieter für SQL Server in ADO.NET arbeiten.