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.
S’applique à :SQL Server
Azure SQL Managed Instance
Les procédures stockées d'activation s'exécutent lors d'une session d'arrière-plan. Par conséquent, les solutions pour dépanner une procédure stockée d'activation diffère légèrement de celles utilisées pour les procédures stockées intégrées à une session interactive.
Technique : Analyser la configuration de Service Broker
Si les procédures stockées activées ne s’exécutent pas correctement, utilisez l’utilitaire ssbdiagnose pour rechercher des erreurs de configuration dans les services associés. Pour plus d’informations, consultez l’utilitaire ssbdiagnose (Service Broker).
Technique : Afficher la sortie de procédure stockée d’activation
Si la procédure stockée activée génère des résultats incorrects ou ne lit pas à partir de la file d'attente, vérifiez le journal des erreurs et les messages de SQL Server pour localiser le problème. Les procédures stockées activées ne sont associées à aucune application. Les informations retournées normalement à l’application appelante sont placées dans le journal des erreurs SQL Server. Cela inclut les erreurs, les messages et la sortie des déclarations PRINT et RAISERROR.
Technique : Exécuter la procédure stockée à partir d’une session interactive
Pour résoudre un problème de procédure stockée d’activation, vous pouvez désactiver l’activation sur la file d’attente, puis exécuter la procédure stockée depuis SQL Server Management Studio ou l’utilitaire sqlcmd. L'exécution de cette procédure à partir d'une session interactive vous permet d'afficher toutes les erreurs qui sont retournées par la procédure stockée.
Toutefois, vous pouvez obtenir des résultats différents si le contexte de sécurité et les paramètres de base de données sont différents dans la session interactive et lorsque la procédure stockée est activée par le Moteur de base de données. Avant d'exécuter la procédure, procédez comme suit :
Utilisez
EXECUTE ASpour définir l’utilisateur de la session interactive sur l’utilisateur spécifié pour l’activation.Définissez les options pour la session sur la base de données par défaut.
Pour plus d’informations, consultez le contexte d’activation interne.
Symptôme : Les procédures stockées d’activation ne s’exécutent pas
Les causes suivantes sont généralement à l'origine de ce symptôme :
Les paramètres de la file d'attente ont peut-être été modifiés. Utilisez l’affichage
sys.service_queuescatalogue pour confirmer les paramètres de la file d’attente. Vérifiez que l'activation de la file d'attente est effective, que la file d'attente spécifie la procédure stockée appropriée et que la file d'attente spécifie le principal de sécurité correct. Contrôlez que le principal de sécurité dispose des autorisations d'exécution sur la procédure stockée.La procédure stockée ne peut pas démarrer ou peut s'arrêter immédiatement après avoir démarré. Dans ce cas, vérifiez le journal d’erreurs SQL Server à la recherche d’éventuelles erreurs provenant de cette procédure. Vous pouvez également exécuter la procédure stockée à partir de SQL Server Management Studio et vérifier les résultats.
Symptôme : Les messages restent dans la file d’attente
Assurez-vous que les procédures stockées d'activation ont démarré correctement :
Vérifiez la vue
sys.dm_broker_queue_monitorsde gestion dynamique pour vous assurer qu’un moniteur de file d’attente est actif pour la file d’attente. Si ce n’est pas le cas, utilisez l’instructionALTER QUEUEpour activerON.L’état du moniteur de file d’attente pour la file d’attente doit être
RECEIVES_OCCURRING. Si le moniteur de file d’attente n’est pas dans cet état, vérifiez la vuesys.dm_broker_activated_tasksde gestion dynamique pour vous assurer que les tâches activées pour la file d’attente sont en cours d’exécution. Si aucune tâche n'est activée, l'activation échoue. Pour plus d'informations, consultez la section « Symptôme : les Procédures stockées d'activation ne s'exécutent pas » plus haut dans cette rubrique.
Si les tâches activées sont en cours d’exécution, mais que les messages restent dans la file d’attente, la tâche échoue RECEIVE ou ne valide pas les transactions. Vérifiez le journal d’erreurs SQL Server à la recherche d’éventuelles erreurs provenant de cette procédure. Arrêter l'activation pour exécuter la procédure stockée manuellement peut permettre de résoudre le problème.