Benutzerdefinierte CLR-Typen

SQL Server ermöglicht das Erstellen von Datenbankobjekten, die für eine Assembly programmiert sind, die in der CLR (Common Language Runtime) 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.

HinweisHinweis

Die Funktion zum Ausführen von CLR-Code ist in SQL Server standardmäßig deaktiviert. Die CLR kann durch Ausführen der gespeicherten Systemprozedur sp_configure aktiviert werden.

Ab SQL Server 2005 können Sie mit benutzerdefinierten Typen (UDTs) das Skalarsystem des Servers erweitern und das Speichern von CLR-Objekten in einer SQL Server-Datenbank aktivieren. UDTs können mehrere Elemente enthalten und Verhalten zeigen, das sie von den herkömmlichen Aliasdatentypen unterscheidet, 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 sind in SQL Server für folgende Zwecke geeignet:

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

  • Geospatial-Anwendungen

  • Codierte oder verschlüsselte Daten

In SQL Server besteht der Prozess der UDTs-Entwicklung aus den folgenden Schritten:

  1. Schreiben 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 mit derTransact-SQL-Anweisung CREATE ASSEMBLY bereitgestellt werden, die die Assembly, die die Klasse oder Struktur enthält, in eine Datenbank kopiert.

  3. Erstellen Sie den UDT in SQL Server.   Sobald eine Assembly in eine Hostdatenbank geladen wird, verwenden Sie die Transact-SQL-Anweisung CREATE TYPE, um einen UDT zu erstellen und die Elemente der Klasse oder Struktur als Elemente 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.

    HinweisHinweis

    Vor SQL Server 2005 wurden aus .NET Framework-Assemblys erstellte UDTs nicht unterstützt. Sie können jedoch nach wie vor SQL Server-Aliasdatentypen mit sp_addtype verwenden. Die CREATE TYPE-Syntax kann zum Erstellen sowohl von systemeigenen, benutzerdefinierten SQL Server-Datentypen als auch UDTs verwendet werden.

  4. Erstellen Sie Tabellen, Variablen oder Parameter mit dem UDT. Ab SQL Server 2005 kann ein benutzerdefinierter Typ als Spaltendefinition einer Tabelle, als Variable in einem Transact-SQL-Batch oder als Argument einer Transact-SQL-Funktion oder gespeicherten Prozedur verwendet werden.

In diesem Abschnitt