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

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.

Vous pouvez déboguer une procédure stockée CLR SQL existante à l'aide du débogage direct de base de données, de la même façon que vous débogueriez une procédure T-SQL. Toutefois, cette action ne fonctionnera pas si vous devez créer ou modifier une procédure SQL CLR, parce qu'il faut la compiler et la déployer. Ces étapes n'existent pas pour la procédure T-SQL. Dans ce cas, vous devez créer un projet SQL Server dans Visual Studio.

La tâche suivante crée une procédure stockée CLR SQL dans la base de données Adventureworks, l'une des bases de données installées avec SQL Server 2005, puis indique comment la déboguer. Vous créez une procédure stockée qui ajoute une nouvelle monnaie à la table Sales.Currency.

Cet exemple illustre le débogage dans un projet SQL Server. Une fois que vous avez créé la procédure stockée, vous pouvez la déboguer à l'aide du débogage direct de base de données. Pour plus d'informations, consultez Comment : effectuer un pas à pas détaillé dans un objet à l'aide de l'Explorateur de serveurs.

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 procédure stockée CLR SQL

  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 procédure stockée à l'aide du code de la première section d'exemple ci-dessous et nommez-la InsertCurrency.cs. Pour plus d'informations, consultez Comment : développer avec le type de projet SQL Server.

  3. Ajouter un script qui teste la procédure stockée en l'appelant. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le répertoire TestScripts, puis 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 InsertCurrency.sql. Cliquez avec le bouton droit sur le nom du fichier et cliquez sur Définir comme script de débogage par défaut.

  4. Définissez les points d'arrêt dans InsertCurrency.cs, puis dans le menu Déboguer, cliquez sur Démarrer pour compiler, déployer et effectuer un test unitaire sur le projet. Lorsque le pointeur d'instruction (désigné par une flèche jaune) apparaît sur un point d'arrêt, cela signifie que vous êtes en train de déboguer la procédure stockée.

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

    1. Ouvrez la fenêtre Variables locales, et dans le menu Déboguer, cliquez sur Pas à pas détaillé pour exécuter le pas à pas détaillé dans une ligne de la procédure stockée. Remarquez que la valeur de la variable @mynvarchar a changé dans la fenêtre Variables locales et que sa valeur s'affiche désormais en rouge, ce qui indique qu'elle a changé. Pour plus d'informations, consultez Utilisation de la fenêtre Variables locales.

      Remarque :

      Il est possible que le serveur ne reflète pas les modifications apportées aux valeurs des variables dans les fenêtres du débogueur. Pour plus d'informations, consultez Limitations du débogage SQL.

    2. Ouvrez la fenêtre Espion. Dans l'Éditeur de texte, faites glisser la variable InsertCurrencyCommand vers n'importe quelle partie de la fenêtre Espion.

      La variable est désormais ajoutée à la liste des variables espionnées. Pour plus d'informations, consultez Comment : utiliser les fenêtres des variables du débogueur.

      Remarque   Vous pouvez également modifier les valeurs des variables dans la fenêtre Espion.

    3. Dans l'Éditeur de texte, cliquez avec le bouton droit sur la ligne InsertCurrencyCommand.ExecuteNonQuery, puis cliquez sur Insérer un point d'arrêt dans le menu contextuel.

    4. Dans le menu Déboguer, cliquez sur Continuer pour que le débogueur exécute le code jusqu'au nouveau point d'arrêt.

  6. Cliquez à nouveau sur Continuer pour terminer le débogage de la procédure stockée.

    Un message apparaît dans la fenêtre Sortie, qui déclare que la procédure stockée a été déployée avec succès et affiche le résultat de l'exécution des commandes dans le fichier InsertCurrency.sql.

Exemple

Remplacez le modèle de procédure stockée par ce code.

using System;
using System.Data;
using System.Data.Sql;
using System.Data.SqlServer;
using System.Data.SqlTypes;

public partial class StoredProcedures
{
    [SqlProcedure]
    public static void InsertCurrency(SqlString currencyCode, 
                                               SqlString name)
    {
        using(SqlConnection conn = new SqlConnection("context connection=true")) {
        SqlCommand cmd = new SqlCommand([your SQL statement], conn);
        }
        InsertCurrencyCommand.CommandText = "insert Sales.Currency"
                     + " (CurrencyCode, Name, ModifiedDate) values('" 
                     + currencyCode.ToString() + "', '" 
                     + name.ToString() + "', '" 
                     + DateTime.Now.ToString() + "')";
        InsertCurrencyCommand.ExecuteNonQuery();
    }
}

Voici le script de test utilisé pour exécuter la procédure stockée.

- Delete any row that might exist with a key value
- that matches the one we are going to insert
DELETE Sales.Currency
WHERE CurrencyCode = 'eee'
EXEC InsertCurrency 'eee', 'MyCurr4'
SELECT * FROM Sales.Currency WHERE CurrencyCode = 'eee'

Voir aussi

Tâches

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

Autres ressources

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