Types CLR définis par l'utilisateur

Dans SQL Server, vous pouvez créer des objets de base de données programmés à partir d'un assembly créé dans le CLR (Common Language Runtime) .NET Framework. Les objets de base de données pouvant tirer parti du modèle de programmation évolué fourni par le CLR comprennent les déclencheurs, les procédures stockées, les fonctions, les fonctions d'agrégation et les types.

[!REMARQUE]

La fonctionnalité d'exécution du code CLR est désactivée par défaut dans SQL Server. Le CLR peut être activé à l'aide de la procédure stockée système sp_configure.

À partir deSQL Server 2005, vous pouvez utiliser des types définis par l'utilisateur (UDT) pour étendre le système de type scalaire du serveur, permettant ainsi le stockage d'objets CLR dans une base de données SQL Server. Les types UDT peuvent contenir plusieurs éléments et avoir des comportements, ce qui les différencie des types de données alias traditionnels qui se composent d'un seul type de données système SQL Server.

Les types UDT étant accessibles au système dans son ensemble, leur utilisation pour des types de données complexes peut nuire aux performances. Les données complexes sont généralement mieux modélisées au moyen de lignes et de tables traditionnelles. Les types UDT dans SQL Server sont bien adaptés aux éléments suivants :

  • Date, heure, devise et types numériques étendus

  • Applications géographiques

  • Données codées ou chiffrées

Le processus de développement de types UDT dans SQL Server comprend les étapes suivantes :

  1. Coder et générer l'assembly définissant le type UDT.   Les types UDT sont définis à l'aide de n'importe quel langage pris en charge par le CLR (Common Language Runtime) .NET Framework capable de produire du code vérifiable, notamment Visual C# et Visual Basic .NET. Les données sont exposées en tant que champs et propriétés d'une classe ou d'une structure .NET Framework, et les comportements sont définis par des méthodes de la classe ou de la structure.

  2. Inscrire l'assembly.   Les types UDT peuvent être déployés par l'intermédiaire de l'interface utilisateur Visual Studio dans un projet de base de données, ou à l'aide de l'instruction Transact-SQL CREATE ASSEMBLY, qui copie l'assembly contenant la classe ou la structure dans une base de données.

  3. Créer le type UDT dans SQL Server.   Une fois qu'un assembly est chargé dans une base de données hôte, vous utilisez l'instruction Transact-SQL CREATE TYPE pour créer un type UDT et exposer les membres de la classe ou de la structure en tant que membres du type UDT. Les types UDT existent uniquement dans le contexte d'une base de données unique et, une fois inscrits, n'ont pas de dépendances vis-à-vis des fichiers externes à partir desquels ils ont été créés.

    [!REMARQUE]

    Dans les versions antérieures à SQL Server 2005, les types UDT créés à partir d'assemblys .NET Framework n'étaient pas pris en charge. Toutefois, vous pouvez encore utiliser des types de données alias SQL Server dans SQL Server 2005 et SQL Server 2008 en utilisant sp_addtype. La syntaxe CREATE TYPE peut être utilisée pour créer à la fois des types de données définis par l'utilisateur SQL Server natifs et des types UDT.

  4. **Créer des tables, des variables ou des paramètres à l'aide du type UDT   **À partir de SQL Server 2005, un type défini par l'utilisateur peut être utilisé comme définition de colonne d'une table, comme variable dans un lot Transact-SQL ou comme argument d'une fonction ou d'une procédure stockée Transact-SQL. Pour plus d'informations, consultez Utilisation de types CLR définis par l'utilisateur.

Dans cette section