Procédure pas à pas : débogage d'une fonction scalaire SQL CLR définie par l'utilisateur

Mise à jour : novembre 2007

Cette rubrique s'applique à :

Édition

Visual Basic

C#

C++

Web Developer

Express

La rubrique ne s'applique pas La rubrique ne s'applique pas La rubrique ne s'applique pas La rubrique ne s'applique pas

Standard

La rubrique ne s'applique pas La rubrique ne s'applique pas La rubrique ne s'applique pas La rubrique ne s'applique pas

Pro et Team

La rubrique s'applique La rubrique s'applique La rubrique s'applique La rubrique s'applique

Légende du tableau :

La rubrique s'applique

Applicable

La rubrique ne s'applique pas

Non applicable

La rubrique s'applique mais la commande est masquée par défaut

Commande ou commandes masquées par défaut.

Cet exemple montre comment déboguer une fonction SQL/CLR définie par l'utilisateur (UDF). Il crée une fonction définie par l'utilisateur CLR SQL dans l'exemple de base de données AdventureWorks.

Remarque :

Les boîtes de dialogue et les commandes de menu qui s'affichent peuvent être différentes de celles qui sont décrites dans l'aide, en fonction de vos paramètres actifs ou de l'édition utilisée. Pour modifier vos paramètres, choisissez Importation et exportation de paramètres dans le menu Outils. Pour plus d'informations, consultez Paramètres Visual Studio.

Pour déboguer une fonction scalaire CLR SQL définie par l'utilisateur

  1. Dans un nouveau projet SQL Server, établissez une connexion à l'exemple de base de données AdventureWorks. Pour plus d'informations, consultez Comment : se connecter à une base de données.

  2. Créez une fonction à l'aide du code dans la première section d'exemple ci-dessous et nommez-la OrderCount.cs. Pour plus d'informations, consultez Comment : développer avec le type de projet SQL Server.

  3. Ajoutez un script qui teste la fonction en l'incluant dans une instruction SELECT. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le répertoire TestScripts, cliquez sur Ajouter un script de test et insérez le code de la deuxième section d'exemple ci-dessous. Enregistrez le fichier sous le nom CallOrderCount.sql. Cliquez avec le bouton droit sur le nom du fichier et sélectionnez Définir comme script de débogage par défaut.

  4. Placez un point d'arrêt dans OrderCount.cs sur la ligne qui instancie SqlCommand, puis dans le menu Déboguer, cliquez sur Démarrer pour compiler, déployer et effectuer un test unitaire sur le projet. L'apparition du pointeur d'instruction (désigné par une flèche jaune) sur le point d'arrêt signifie que vous êtes en train de déboguer votre fonction.

  5. Testez différentes fonctionnalités de débogage.

    1. Dépassez l'instruction qui instancie SqlCommand à l'aide de Pas à pas détaillé dans le menu Déboguer.

    2. Dans la fenêtre Variables locales, ouvrez la variable sqlComm, qui est une SqlCommand, et examinez ses membres.

    3. Cliquez sur Pas à pas détaillé dans le menu Déboguer pour avancer d'une ligne dans la fonction. Notez que le membre sqlComm.CommandText a été instancié.

    4. Dans l'Éditeur de texte, faites glisser sqlComm n'importe où dans la fenêtre Espion. La variable est désormais ajoutée à la liste des variables espionnées.

    5. Sélectionnez de nouveau Pas à pas détaillé. Remarquez qu'une nouvelle fenêtre intitulée T-SQL dynamique s'ouvre, qui affiche l'instruction SQL sur le point d'être exécutée.

    6. Sélectionnez Pas à pas détaillé pour exécuter l'instruction et retourner à la fonction.

    7. Appuyez de nouveau sur Continuer, et remarquez la deuxième fenêtre T-SQL dynamique qui s'ouvre et affiche le code qui retourne la valeur de la fonction.

    8. Choisissez de nouveau Continuer pour terminer le débogage de la fonction.

Exemple

Voici le code nécessaire pour créer la fonction.

using System;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
 
 
public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
    public static int OrderCount()
    {
        using (SqlConnection conn = new SqlConnection("context connection=true"))
            {
                  conn.Open();
                  SqlCommand cmd = new SqlCommand();
                  cmd.Connection = conn;
                  cmd.CommandText = "SELECT 42";
                  
                  //cmd = new SqlCommand("SELECT 42",conn);
 
                  int result = (int)cmd.ExecuteScalar();
                  return result;
            }
    }
};

Voici le script de test qui appelle la fonction.

SELECT dbo.OrderCount()

Voir aussi

Tâches

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

Autres ressources

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