Partager via


Limitations du débogage Transact-SQL

Cette rubrique s'applique à :

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional

Visual Studio Express

kkyhd4yb.DoesApplybmp(fr-fr,VS.100).gif kkyhd4yb.DoesApplybmp(fr-fr,VS.100).gif kkyhd4yb.DoesApplybmp(fr-fr,VS.100).gif kkyhd4yb.DoesNotApplybmp(fr-fr,VS.100).gif

Un certain nombre de limitations générales sont à prendre en compte lors du débogage Transact-SQL avec le débogueur Visual Studio et SQL Server à partir de SQL Server 2005. Pour plus d'informations sur le débogage Transact-SQL avec SQL Server Management Studio, consultez Utilisation du débogueur Transact-SQL

Débogage SQL multicouches

  • Lorsque vous déboguez des applications multicouches, vous ne pouvez pas utiliser le Pas à pas détaillé pour effectuer un débogage pas à pas du code dans la couche Application (C#, Visual Basic ou C++) vers le code sur l'instance de SQL Server (Transact-SQL ou SQL/CLR).À la place, vous définissez un point d'arrêt dans le code de procédure stockée et appuyez sur Continuer (F5) pour exécuter le code jusqu'au point d'arrêt.Vous pouvez également utiliser Exécuter jusqu'au curseur pour atteindre un point de votre choix, sans utiliser un point d'arrêt.Notez qu'à l'intérieur de la couche SQL Server, vous pouvez basculer entre le code Transact-SQL et SQL/CLR.

  • Vous ne pouvez pas non plus effectuer un débogage pas à pas dans l'autre sens, du code de procédure stockée vers le code sur la couche qui a appelé la procédure stockée.Pour continuer à déboguer après être retourné à la couche application, définissez un point d'arrêt dans votre code d'application à partir du point d'appel de la procédure stockée.

  • Le regroupement de connexions est une technique destinée à améliorer la performance.Lorsqu'une application ferme sa connexion de données, une connexion SQL Server n'est pas complètement fermée mais elle est conservée dans un pool qui peut être réutilisé ultérieurement si l'application tente par la suite de rouvrir la connexion.Toutefois, lorsqu'une connexion est rétablie via le regroupement de connexions, le débogage Transact-SQL n'est pas réactivé.

    Vous devez désactiver le regroupement de connexions temporairement au cours du débogage.Pour cela, définissez « Pooling=false » dans la chaîne de connexion utilisée pour se connecter à l'instance de SQL Server.À la fin du débogage, supprimez cet attribut de la chaîne de connexion, et le regroupement sera activé par défaut.

  • Une application managée peut se connecter à une source de données SQL Server à l'aide du Fournisseur de données .NET Framework pour SQL Server, ce qui offre une meilleure performance que de se connecter à OLE DB ou ODBC.Vous pouvez effectuer le débogage managé et le débogage Transact-SQL dans la même session de débogueur.

    Si une application managée s'exécute et que vous créez un attachement à l'application à l'aide du débogueur, vous pouvez choisir le type de débogage de votre choix.Pour effectuer le débogage Transact-SQL, vous devez choisir le débogage Transact-SQL, et si vous souhaitez déboguer le code SQL/CLR, vous devez également spécifier le débogage managé.

  • Vous pouvez effectuer le débogage Transact-SQL après avoir créé un attachement à une application en cours d'exécution.Toutefois, notez que seules peuvent être déboguées les connexions de base de données que vous créez au terme de l'action Attacher.Ainsi, si une application appelle une procédure stockée qui nécessite beaucoup de temps, vous ne pouvez pas créer d'attachement à la connexion qui a appelé la procédure stockée, mais uniquement aux nouvelles connexions qui appellent la procédure stockée après votre connexion à l'application.

  • Si vous déboguez via une connexion établie avec OleDbDataAdapter, une durée d'attente importante après avoir atteint un point d'arrêt provoquera une expiration du délai d'attente de la connexion.Lorsque vous essayez de continuer à déboguer après ce délai d'attente (sélectionner Continuer dans le menu Déboguer par exemple), le débogueur s'arrêtera (au lieu de continuer l'exécution).Ce comportement est attendu.Le débogueur se termine parce qu'OleDbDataAdapter, contrairement à SqlDataAdapter, ne lève pas d'exception en cas d'expiration du délai d'attente.Pour contourner ce problème, attribuez à la valeur du délai d'expiration un nombre élevé lors de l'utilisation d'OleDbDataAdapter.

    Pour plus d'informations sur la définition de la valeur du délai d'expiration pour les fournisseurs de données .NET Framework, consultez OleDbCommand.CommandTimeout Property et SqlCommand.CommandTimeout Property dans la documentation de la bibliothèque de classes de .NET Framework.

Autres limitations

  • Les déclencheurs doivent être déclenchés pour être débogué : vous ne pouvez pas déboguer des déclencheurs directement.Commencez plutôt par déboguer dans une procédure stockée qui déclenchera le déclencheur.

  • Pour le débogage du runtime, une série de sous-sélections (par exemple, dans une union) peut remplir le netbuffer.Cela peut provoquer un arrêt du débogage du code qui s'exécute correctement en temps normal.Pour obtenir plus de données, utilisez RecordSet.MoveNext et RecordSet.NextRecordSet.

  • Si le nom d'une procédure stockée contient des guillemets, vous pouvez recevoir un message d'erreur du débogueur.Pour plus d'informations, consultez Erreur lors du débogage de procédures dont les noms contiennent des guillemets.

  • Les valeurs mises en cache ne sont pas modifiées automatiquement.Vous ne pouvez pas toujours attendre que les modifications apportées aux paramètres ou variables locales mises en cache par l'interpréteur Transact-SQL soient appliquées pendant la période où vous effectuez un débogage pas à pas via une instruction Transact-SQL.Même si vous avez modifié la valeur, elle peut ne plus jamais être vérifiée.Vous ne pouvez pas forcer une actualisation des valeurs mises en cache.Les valeurs mises en cache existent parce que le plan d'exécution SQL Server détermine que les valeurs de certaines variables ne seront pas chargées dynamiquement pour chaque exécution d'instruction ou référence.Pour plus d'informations, recherchez « SHOWPLAN » dans la documentation SQL Server.

  • Vous ne pouvez pas créer un attachement au processus SQL Server natif et déboguer une procédure stockée simultanément.

Voir aussi

Concepts

Débogage Transact-SQL

Limitations appliquées aux commandes et fonctionnalités du débogueur

Autres ressources

Debugger Security