Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
SQL Server prend en charge le débogage Transact-SQL et les objets CLR (Common Language Runtime) dans la base de données. Les principaux aspects du débogage dans SQL Server sont la facilité d’installation et d’utilisation, ainsi que l’intégration du débogueur SQL Server au débogueur Microsoft Visual Studio. En outre, le débogage fonctionne entre les langages. Les utilisateurs peuvent passer en toute transparence aux objets CLR à partir de Transact-SQL, et inversement. Le débogueur Transact-SQL dans SQL Server Management Studio ne peut pas être utilisé pour déboguer des objets de base de données managés, mais vous pouvez déboguer les objets à l’aide des débogueurs dans Visual Studio. Le débogage d’objets de base de données managé dans Visual Studio prend en charge toutes les fonctionnalités de débogage courantes, telles que les instructions « pas à pas » et « pas à pas » dans les routines qui s’exécutent sur le serveur. Les débogueurs peuvent définir des points d’arrêt, inspecter la pile des appels, inspecter les variables et modifier les valeurs des variables lors du débogage. Notez que Visual Studio .NET 2003 ne peut pas être utilisé pour la programmation ou le débogage de l’intégration CLR. SQL Server inclut le .NET Framework préinstallé et Visual Studio .NET 2003 ne peut pas utiliser les assemblys .NET Framework 2.0.
Pour plus d’informations sur le débogage de code managé à l’aide de Visual Studio, consultez la rubrique « Débogage du code managé » dans la documentation de Visual Studio.
Autorisations et restrictions de débogage
Le débogage est une opération hautement privilégiée. Par conséquent, seuls les membres du rôle serveur fixe sysadmin sont autorisés à le faire dans SQL Server.
Les restrictions suivantes s’appliquent lors du débogage :
Le débogage des routines CLR est limité à une seule instance de débogueur à la fois. Cette limitation s’applique car toutes les exécutions de code CLR se bloquent lorsqu’un point d’arrêt est atteint et que l’exécution ne continue pas tant que le débogueur avance du point d’arrêt. Toutefois, vous pouvez continuer le débogage Transact-SQL dans d’autres connexions. Bien que Transact-SQL débogage ne bloque pas d’autres exécutions sur le serveur, d’autres connexions peuvent attendre en maintenant un verrou.
Les connexions existantes ne peuvent pas être déboguées, seules les nouvelles connexions, car SQL Server nécessite des informations sur le client et l’environnement du débogueur avant que la connexion ne puisse être établie.
En raison des restrictions ci-dessus, nous vous recommandons de déboguer Transact-SQL et le code CLR sur un serveur de test, et non sur un serveur de production.
Vue d’ensemble du débogage d’objets de base de données managés
Le débogage dans SQL Server suit un modèle par connexion. Un débogueur peut détecter et déboguer des activités uniquement à la connexion cliente à laquelle elle est attachée. Étant donné que la fonctionnalité du débogueur n’est pas limitée par le type de connexion, le flux de données tabulaire (TDS) et les connexions HTTP peuvent être débogués. Toutefois, SQL Server n’autorise pas le débogage des connexions existantes. Le débogage prend en charge toutes les fonctionnalités de débogage courantes dans les routines s’exécutant sur le serveur. L’interaction entre un débogueur et SQL Server se produit via le modèle objet de composant distribué (COM).
Pour plus d’informations et de scénarios sur le débogage des procédures stockées gérées, des fonctions, des déclencheurs, des types définis par l’utilisateur et des agrégats, consultez la rubrique « Débogage de base de données d’intégration CLR SQL Server » dans la documentation visual Studio.
Le protocole réseau TCP/IP doit être activé sur l’instance SQL Server afin d’utiliser Visual Studio pour le développement à distance, le débogage et le développement. Pour plus d’informations sur l’activation du protocole TCP/IP sur le serveur, consultez Configurer des protocoles clients.
Pour déboguer un objet de base de données managée
Ouvrez Microsoft Visual Studio, créez un projet SQL Server et établissez une connexion à une base de données sur une instance de SQL Server.
Créez un nouveau type. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet, sélectionnez Ajouter et nouvel élément... Dans la fenêtre Ajouter un nouvel élément , sélectionnez Procédure stockée, fonctionUser-Defined, typeUser-Defined, déclencheur, agrégat ou classe. Spécifiez un nom pour le fichier source du nouveau type, puis cliquez sur Ajouter.
Ajoutez du code pour le nouveau type à l’éditeur de texte. Pour obtenir un exemple de code pour un exemple de procédure stockée, consultez la section plus loin dans cette rubrique.
Ajoutez un script qui teste le type. Dans l’Explorateur de solutions, développez le répertoire TestScripts , double-cliquez sur Test.sql pour ouvrir le fichier source du script de test par défaut. Ajoutez le script de test, qui appelle le code à déboguer, à l’éditeur de texte. Consultez ci-dessous pour obtenir un exemple de script.
Placez un ou plusieurs points d’arrêt dans le code source. Cliquez avec le bouton droit sur une ligne de code dans l’éditeur de texte, dans la fonction ou la routine que vous souhaitez déboguer, puis sélectionnez Point d’arrêt et Insérer un point d’arrêt. Le point d’arrêt est ajouté, mettant en surbrillance la ligne de code en rouge.
Dans le menu Débogage , sélectionnez Démarrer le débogage pour compiler, déployer et tester le projet. Le script de test dans Test.sql sera exécuté et l’objet de base de données managée sera appelé.
Lorsque la flèche jaune désignant le pointeur d’instruction apparaît au niveau de l’exécution du code de point d’arrêt s’interrompt et que vous pouvez commencer à déboguer votre objet de base de données managée. Vous pouvez passer à pas à partir du menu Débogage pour faire avancer le pointeur d’instruction vers la ligne de code suivante. La fenêtre Locals est utilisée pour observer l’état des objets actuellement mis en surbrillance par le pointeur d’instruction. Les variables peuvent être ajoutées à la fenêtre Espion . L’état des variables surveillées peut être observé tout au long de la session de débogage, non seulement lorsque la variable se trouve dans la ligne de code actuellement mise en surbrillance par le pointeur d’instruction. Sélectionnez Continuer dans le menu Débogage pour avancer le pointeur d’instruction vers le point d’arrêt suivant ou pour terminer l’exécution de la routine s’il n’y a plus de points d’arrêt.
Exemple :
L’exemple suivant retourne la version de SQL Server à l’appelant.
C#
using System;
using System.Data;
using System.Data.SqlTypes;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
public class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void GetVersion()
{
using(SqlConnection connection = new SqlConnection("context connection=true"))
{
connection.Open();
SqlCommand command = new SqlCommand("select @@version",
connection);
SqlContext.Pipe.ExecuteAndSend(command);
}
}
}
Visual Basic
Imports System
Imports System.Data
Imports System.Data.Sql
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server
Imports System.Data.SqlClient
Partial Public Class StoredProcedures
<Microsoft.SqlServer.Server.SqlProcedure> _
Public Shared Sub GetVersion()
Using connection As New SqlConnection("context connection=true")
connection.Open()
Dim command As New SqlCommand("SELECT @@VERSION", connection)
SqlContext.Pipe.ExecuteAndSend(command)
End Using
End Sub
End Class
Voici un script de test qui appelle la procédure stockée GetVersion définie ci-dessus.
EXEC GetVersion
Voir aussi
Concepts de programmation d’intégration du Common Language Runtime (CLR)