Benutzerdefinierte CLR-TypenCLR User-Defined Types

GILT FÜR: jaSQL Server neinAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server bietet Ihnen die Möglichkeit zum Erstellen von Datenbankobjekten, die für eine in die .NET Framework common Language Runtime (CLR) erstellten Assembly programmiert werden.gives you the ability to create database objects that are programmed against an assembly created in the .NET Framework common language runtime (CLR). Zu den Datenbankobjekten, die das umfangreiche Programmierungsmodell der CLR nutzen können, zählen Trigger, gespeicherte Prozeduren, Funktionen, Aggregatfunktionen und Typen.Database objects that can take advantage of the rich programming model provided by the CLR include triggers, stored procedures, functions, aggregate functions, and types.

Hinweis

Die Fähigkeit zum Ausführen von CLR-Code auf OFF festgelegt ist, wird standardmäßig in SQL ServerSQL Server.The ability to execute CLR code is set to OFF by default in SQL ServerSQL Server. Die CLR kann aktiviert werden, mithilfe der Sp_configure gespeicherten Systemprozedur.The CLR can be enabled by using the sp_configure system stored procedure.

Beginnend mit SQL Server 2005 (9.x)SQL Server 2005 (9.x), können Sie benutzerdefinierte Typen (UDTs) das skalartypsystem des Servers erweitern, Aktivieren der Speicherung von CLR-Objekte einem SQL ServerSQL Server Datenbank.Beginning with SQL Server 2005 (9.x)SQL Server 2005 (9.x), you can use user-defined types (UDTs) to extend the scalar type system of the server, enabling storage of CLR objects in a SQL ServerSQL Server database. UDTs können mehrere Elemente enthalten und Verhalten zeigen, das sie von den herkömmlichen Aliasdatentypen unterscheidet, die aus einem einzelnen SQL ServerSQL Server-Systemdatentyp bestehen.UDTs can contain multiple elements and can have behaviors, differentiating them from the traditional alias data types which consist of a single SQL ServerSQL Server system data type.

Da das System auf UDTs als Ganzes zugreift, kann sich ihre Verwendung für komplexe Datentypen negativ auf die Leistung auswirken.Because UDTs are accessed by the system as a whole, their use for complex data types may negatively impact performance. Komplexe Daten werden im Allgemeinen am besten mit herkömmlichen Zeilen und Tabellen modelliert.Complex data is generally best modeled using traditional rows and tables. UDTs sind in SQL ServerSQL Server für folgende Zwecke geeignet:UDTs in SQL ServerSQL Server are well suited to the following:

  • Datum, Zeit, Währung und erweiterte numerische TypenDate, time, currency, and extended numeric types

  • Geospatial-AnwendungenGeospatial applications

  • Codierte oder verschlüsselte DatenEncoded or encrypted data

In SQL ServerSQL Server besteht der Prozess der UDTs-Entwicklung aus den folgenden Schritten:The process of developing UDTs in SQL ServerSQL Server consists of the following steps:

  1. Codieren Sie und erstellen Sie die Assembly, die den UDT definiert.Code and build the assembly that defines the UDT. UDTs werden in einer beliebigen, von der .NET Framework-CLR (Common Language Runtime) unterstützten Sprache definiert, die überprüfbaren Code generiert.UDTs are defined using any of the languages supported by the.NET Framework common language runtime (CLR) that produce verifiable code. Dazu gehören Visual c# und Visual Basic .NET.This includes Visual C# and 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.The data is exposed as fields and properties of a .NET Framework class or structure, and behaviors are defined by methods of the class or structure.

  2. Registrieren der Assemblys an.Register the assembly. UDTs können über die Visual Studio-Benutzeroberfläche in einem Datenbankprojekt oder mit derTransact-SQLTransact-SQL-Anweisung CREATE ASSEMBLY bereitgestellt werden, die die Assembly, die die Klasse oder Struktur enthält, in eine Datenbank kopiert.UDTs can be deployed through the Visual Studio user interface in a database project, or by using the Transact-SQLTransact-SQL CREATE ASSEMBLY statement, which copies the assembly containing the class or structure into a database.

  3. Erstellen Sie den UDT in SqlServer.Create the UDT in SQL Server. Sobald eine Assembly in eine Hostdatenbank geladen wurde, erstellen Sie einen UDT mit der Transact-SQLTransact-SQL-Anweisung CREATE TYPE, und machen die Elemente der Klasse oder Struktur als Elemente des UDT verfügbar.Once an assembly is loaded into a host database, you use the Transact-SQLTransact-SQL CREATE TYPE statement to create a UDT and expose the members of the class or structure as members of the UDT. 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.UDTs exist only in the context of a single database, and, once registered, have no dependencies on the external files from which they were created.

    Hinweis

    Vor SQL Server 2005 (9.x)SQL Server 2005 (9.x) wurden aus .NET Framework-Assemblys erstellte UDTs nicht unterstützt.Before SQL Server 2005 (9.x)SQL Server 2005 (9.x), UDTs created from .NET Framework assemblies were not supported. Allerdings können Sie weiterhin verwenden SQL ServerSQL Server Aliasdatentypen mit Sp_addtype.However, you can still use SQL ServerSQL Server alias data types by using sp_addtype. Die CREATE TYPE-Syntax kann zum Erstellen sowohl von systemeigenen, benutzerdefinierten SQL ServerSQL Server-Datentypen als auch UDTs verwendet werden.The CREATE TYPE syntax can be used for creating both native SQL ServerSQL Server user-defined data types and UDTs.

  4. Erstellen von Tabellen, Variablen oder Parameter mit dem UDT ab SQL Server 2005 (9.x)SQL Server 2005 (9.x), ein UDT als Spaltendefinition einer Tabelle, als Variable in verwendet werden kann eine Transact-SQLTransact-SQL Batch oder als Argument ein Transact-SQLTransact-SQL Funktion oder gespeicherten die Prozedur.Create tables, variables, or parameters using the UDT Beginning with SQL Server 2005 (9.x)SQL Server 2005 (9.x), a user-defined type can be used as the column definition of a table, as a variable in a Transact-SQLTransact-SQL batch, or as an argument of a Transact-SQLTransact-SQL function or stored procedure.

In diesem AbschnittIn This Section

Erstellen eines benutzerdefinierten TypsCreating a User-Defined Type
Beschreibt das Erstellen von UDTs.Describes how to create UDTs.

Registrieren benutzerdefinierter Typen in SQL ServerRegistering User-Defined Types in SQL Server
Beschreibt, wie UDTs in SQL ServerSQL Server registriert und verwaltet werden.Describes how to register and manage UDTs in SQL ServerSQL Server.

Arbeiten mit benutzerdefinierten Typen in SQL ServerWorking with User-Defined Types in SQL Server
Beschreibt das Erstellen von Abfragen mit UDTs.Describes how to create queries using UDTs.

Zugreifen auf benutzerdefinierte Typen in ADO.NETAccessing User-Defined Types in ADO.NET
Beschreibt die Verwendung von UDTs mit dem .NET Framework-Datenanbieter für SQL ServerSQL Server in ADO.NET.Describes how to work with UDTs using the .NET Framework Data Provider for SQL ServerSQL Server in ADO.NET.