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 Microsoft.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. Codieren und erstellen Sie die Assembly, die den UDT definiert.   UDTs werden in einer beliebigen, von .NET Framework Common Language Runtime (CLR) 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 wurde, erstellen Sie einen UDT mit der Transact-SQL-Anweisung CREATE TYPE, und machen die Elemente der Klasse oder Struktur als Elemente des UDT verfügbar. 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 in SQL Server 2005 und höher verwenden, indem Sie 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 einer gespeicherten Prozedur verwendet werden. Weitere Informationen finden Sie unter Arbeiten mit CLR-benutzerdefinierten Typen.

In diesem Abschnitt