Benutzerdefinierte CLR-Typen

Anwendungsbereich: JaSQL Server (alle unterstützten Versionen)

SQL Serverbietet Ihnen die Möglichkeit, Datenbankobjekte zu erstellen, die für eine 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 in standardmäßig auf OFF festgelegt SQL Server . Die CLR kann mithilfe der gespeicherten System Prozedur sp_configure aktiviert werden.

Ab SQL Server 2005 (9.x) können Sie benutzerdefinierte Typen (User-Defined Types, UDTs) verwenden, um das skalare Typsystem des Servers zu erweitern und so die Speicherung von CLR-Objekten in einer Datenbank zu ermöglichen SQL Server . 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 der .NET Framework-CLR (Common Language Runtime) unterstützten Sprache definiert, die überprüfbaren Code generiert. Dies umfasst 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.

    Hinweis

    Vor SQL Server 2005 (9.x) wurden aus .NET Framework-Assemblys erstellte UDTs nicht unterstützt. Sie können jedoch weiterhin SQL Server Alias Datentypen verwenden, indem Sie sp_addtypeverwenden. Die CREATE TYPE-Syntax kann zum Erstellen sowohl von systemeigenen, benutzerdefinierten SQL Server-Datentypen als auch UDTs verwendet werden.

  4. Erstellen von Tabellen, Variablen oder Parametern mit dem 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 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 die Verwendung von UDTs mit dem .NET Framework-Datenanbieter für SQL Server in ADO.NET.