Partager via


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

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

Visual Studio Professional, Visual Studio Premium et Visual Studio Ultimate

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

Vous pouvez déboguer une procédure stockée CLR SQL SQL Serverexistante à l'aide du débogage direct de base de données, de la même façon que vous débogueriez une procédure Transact-SQL. Toutefois, cela ne fonctionne pas si vous devez créer ou modifier une procédure de langage CLR SQL, car vous devez la compilation et déploiement. Ces étapes qui n'existent pasTransact-SQL pour la procédure. 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 How to: Step into an Object Using Server Explorer.

Notes

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 Utilisation des paramètres.

Si, lorsque vous essayez de déboguer un objet CLR SQL, le message « Annulé par l'utilisateur » s'affiche, vous devez configurer manuellement à la fois l'ordinateur sur lequel vous exécutez Visual Studio et l'ordinateur qui exécute SQL Server. Pour plus d'informations, consultez Comment : configurer vos ordinateurs pour activer le débogage Transact-SQL et CLR SQL.

Pour déboguer une procédure stockée CLR SQL

  1. Activez le débogage distant. Pour plus d'informations, consultez Comment : installer le débogage distant.

  2. Dans un nouveau projet SQL Server, établissez une connexion à l'exemple de base de données AdventureWorks. Pour plus d'informations, consultez How to: Connect to a Database.

  3. 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 How to: Develop with the SQL Server Project Type.

  4. 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.

  5. 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.

  6. 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.

      Notes

      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.

  7. 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 à l'aide de l'intégration du Common Language Runtime

Autres ressources

Comment : configurer vos ordinateurs pour activer le débogage Transact-SQL et CLR SQL