Avantages de l'utilisation de code managé pour créer des objets de base de données

Mise à jour : novembre 2007

Vous pouvez utiliser les langages .NET Framework en plus du langage de programmation Transact-SQL pour créer des objets de base de données, ainsi que pour extraire et mettre à jour des données de bases de données Microsoft SQL Server 2005. Dans les projets Visual Basic, Visual C# ou Visual C++, vous pouvez créer des procédures stockées, des déclencheurs, des agrégats, des fonctions définies par l'utilisateur et des types définis par l'utilisateur.

Remarque :

Par défaut, la fonctionnalité d'intégration du Common Language Runtime (CLR) est désactivée dans Microsoft SQL Server. Elle doit être activée pour utiliser les éléments de projet SQL Server. Pour activer l'intégration du CLR, utilisez l'option clr enabled de la procédure stockée sp_configure. Pour plus d'informations, consultez Activation de l'intégration CLR.

La liste suivante récapitule les avantages de l'utilisation d'un langage .NET Framework plutôt que Transact-SQL :

  • Modèle de programmation amélioré Les langages .NET Framework proposent des constructions et des fonctions qui n'étaient pas mis auparavant à la disposition des développeurs SQL.

  • Sécurité et sûreté améliorées Le code managé s'exécute dans un environnement Common Language Runtime hébergé par le moteur de base de données. Cela permet d'améliorer la sécurité et la sûreté des objets de base de données .NET Framework par rapport aux procédures stockées étendues disponibles dans les versions précédentes de SQL Server.

  • Types et agrégats définis par l'utilisateur   Les types et agrégats définis par l'utilisateur sont deux nouveaux objets de base de données managés qui étendent les fonctions de stockage et d'interrogation de SQL Server.

  • Environnement de développement commun   Le développement de base de données est intégré dans l'environnement de développement Microsoft Visual Studio. Les développeurs se servent des mêmes outils pour développer et déboguer des objets de base de données et des scripts que ceux qu'ils utilisent pour écrire des composants et services .NET Framework de couche intermédiaire et client.

  • Meilleures performances   Certaines fonctions, telles que celles qui exécutent des opérations mathématiques sur chaque ligne d'une base de données, peuvent être plus performantes s'il s'agit d'assemblys compilés générés à partir d'un projet Visual Basic, Visual C# ou Visual C++ plutôt que de fonctions écrites en Transact-SQL, puisqu'il s'agit de code interprété. Par exemple, on peut observer une amélioration des performances de certaines fonctions, particulièrement celles qui exécutent des opérations sur des entiers. Toutefois, les procédures stockées qui accèdent uniquement aux données n'offrent pas de meilleures performances.

  • Richesse du langage Visual Basic, Visual C# et Visual C++ fournissent des fonctions qui ne sont pas disponibles dans Transact-SQL, telles que les tableaux, la gestion des exceptions évoluée et la réutilisabilité du code.

  • Réutilisabilité du code Une bibliothèque d'assemblys managés peut être créée et distribuée plus facilement qu'un script Transact-SQL.

  • Extensibilité   À l'aide de Visual Basic, Visual C# ou Visual C++, vous pouvez créer deux objets de base de données qui ne peuvent l'être avec Transact-SQL : les agrégats et les types définis par l'utilisateur.

  • Application des compétences existantes Vous pouvez utiliser et améliorer vos compétences en matières de langages et d'environnement de développement avec lesquels vous êtes déjà familiarisé afin de créer des objets de base de données.

  • Expérience de développeur plus riche   Lorsque vous développez des objets de base de données en utilisant le modèle de projet SQL Server, vous bénéficiez d'une intégration complète au système de projet. Cela inclut la génération, le débogage et le déploiement sur plusieurs serveurs.

  • Stabilité et fiabilité Les objets de base de données que vous créez à l'aide de Visual Basic, Visual C# ou Visual C++, sont plus sécurisés, plus stables, plus robustes et plus fiables que les procédures stockées étendues qui peuvent entraîner des fuites de mémoire ou d'autres problèmes réduisant les performances et la fiabilité du serveur. Lorsque vous exécutez des procédures stockées créées à l'aide de Visual Basic, Visual C# ou Visual C++, la gestion de la mémoire et le threading ne sont pas exécutés par celles-ci et sont donc gérés de manière plus fiable.

  • Sécurité   Lorsque vous utilisez des objets de base de données créés à l'aide de Visual Basic, Visual C# ou Visual C++, la sécurité d'accès du code de ces langages est combinée aux autorisations utilisateur dans SQL Server.

Procédures stockées et déclencheurs

Les procédures stockées sont une collection précompilée d'instructions de programmation qui exécutent des opérations dans la base de données et sont stockées sous un nom et traitées en tant qu'unité. Pour plus d'informations sur les procédures stockées, consultez la documentation SQL Server.

Un déclencheur est une procédure stockée particulière qui est activée lorsque vous modifiez des données dans une table déterminée en utilisant une ou plusieurs opérations de modification des données : UPDATE, INSERT ou DELETE. Pour plus d'informations sur les déclencheurs, consultez la documentation de SQL Server.

Le développement de procédures stockées et de déclencheurs est amélioré par la richesse du langage de Visual Basic, Visual C# et Visual C++, en particulier lorsque vous implémentez la logique procédurale complexe requise pour appliquer les règles métier. De plus, le .NET Framework contient un grand nombre de bibliothèques. Celles qui permettent de gérer de nombreux aspects de la cryptographie, les bibliothèques de calcul étendues et l'accès externe aux services Web, fichiers et systèmes de communication interentreprises ont un intérêt particulier.

Fonctions

Les fonctions agissent sur une ou plusieurs valeurs pour retourner une valeur scalaire ou une table. Pour plus d'informations sur les types de fonctions que le langage de programmation de Transact-SQL fournit, consultez la documentation SQL Server.

Comme les procédures stockées et les déclencheurs, le développement des fonctions est amélioré par la richesse du langage de Visual Basic, Visual C# et Visual C++, ainsi que par l'accès aux nombreuses bibliothèques contenues dans le .NET Framework.

Agrégats

Les fonctions d'agrégation sont utilisées pour récapituler toutes les données contenues dans une table. Elles exécutent un calcul sur un jeu de valeurs et retournent une valeur scalaire unique. Pour plus d'informations sur les fonctions d'agrégation fournies par le langage de programmation Transact-SQL, consultez la documentation SQL Server.

Pour compléter ces fonctions d'agrégation, vous pouvez définir de nouveaux agrégats qui exécutent des fonctions arithmétiques plus complexes. Par exemple, vous pouvez exécuter un calcul sur les données contenues dans de nombreuses lignes et retourner une valeur ou créer une chaîne concaténée.

Types définis par l'utilisateur

Les types spécifient la nature des données. Pour plus d'informations sur le jeu de types de données système fourni avec SQL Server, consultez la documentation qui l'accompagne.

À l'aide de Visual Basic, Visual C# et Visual C++, vous pouvez définir de nouveaux types afin de ne plus être limité aux types prédéfinis fournis avec SQL Server. Vous pouvez créer des types simples, tels que des codes postaux, ou des types plus complexes pour analyser les informations retournées par une transaction de carte de crédit. En outre, lorsque vous utilisez des types définis par l'utilisateur, les données peuvent être interprétées et manipulées à la fois dans le client SQL et dans SQL Server ; à l'aide d'ADO.NET, vous pouvez télécharger un assembly contenant une définition de type provenant de SQL Server et l'utiliser pour examiner des données dans le client SQL.

Voir aussi

Tâches

Comment : créer un projet SQL Server

Comment : créer et exécuter une procédure stockée SQL Server CLR

Comment : créer et exécuter un déclencheur SQL Server CLR

Comment : créer et exécuter un agrégat SQL Server CLR

Comment : créer et exécuter une fonction définie par l'utilisateur SQL Server CLR

Comment : créer et exécuter un type défini par l'utilisateur SQL Server CLR

Procédure pas à pas : création d'une procédure stockée dans le code managé

Comment : déboguer une procédure stockée SQL CLR

Concepts

Présentation de l'intégration de CLR dans SQL Server (ADO.NET)

Avantages de l'utilisation de code managé pour créer des objets de base de données

Modèles d'élément pour les projets SQL Server

Référence

Attributs pour les projets SQL Server et les objets de base de données

Autres ressources

Débogage d'une base de données SQL CLR