Contexte de l'activation interne

Cette rubrique décrit le contexte d'exécution d'une procédure stockée qui est lancée par l'activation interne.

Contexte de sécurité

Une file d'attente configurée pour l'activation doit également spécifier le compte d'utilisateur sous lequel la procédure stockée d'activation s'exécute. SQL Server emprunte l'identité de cet utilisateur avant de lancer la procédure stockée.

Lorsque la procédure stockée spécifie également une clause EXECUTE AS, deux emprunts d'identité interviennent. SQL Server emprunte tout d'abord l'identité de l'utilisateur spécifié pour la file d'attente, puis il exécute la procédure stockée. Lorsque la procédure stockée s'exécute, elle emprunte l'identité de l'utilisateur spécifié dans la clause EXECUTE AS de la procédure.

Notez qu'en règle générale, l'utilisateur spécifié pour une liaison de service distant ne correspond pas à l'utilisateur spécifié pour l'activation. Les autorisations requises pour chaque utilisateur diffèrent également. L'utilisateur spécifié pour une liaison de service distant n'a pas besoin d'autorisations pour lire à partir de la file d'attente ou pour exécuter des procédures stockées dans la base de données. Quant à l'utilisateur spécifié pour l'activation, il n'a pas besoin d'autorisations pour envoyer des messages au service. Pour plus d'informations sur les autorisations de l'utilisateur, consultez Identité et contrôle d'accès (Service Broker) et Sécurité du dialogue Service Broker.

Paramètres de session

Service Broker exécute les programmes de service activés en interne dans une session en arrière-plan distincte de celle de la connexion qui a créé le message. Les options définies pour cette session sont les options par défaut de la base de données.

Dans une session lancée par Service Broker, SQL Server écrit la sortie des instructions PRINT et RAISERROR dans le journal des erreurs SQL Server. Service Broker ne fournit pas de paramètres à une procédure stockée activée. Service Broker ne prend pas en compte les valeurs de retour d'une procédure stockée activée et ne traite pas les jeux de résultats d'une procédure stockée activée.

Contexte de transaction

Une procédure stockée activée est chargée de gérer des transactions. SQL Server ne démarre aucune transaction avant d'activer la procédure stockée, et la procédure stockée s'exécute dans un contexte de transaction différent de celui de l'opération interne qui active la procédure. Pour obtenir des informations complémentaires sur la gestion des transactions dans les procédures stockées activées, consultez Messagerie transactionnelle.

Détection des défaillances

Une procédure stockée activée doit recevoir des messages de la file d'attente qui a activé la procédure. Si la procédure stockée se termine sans que des messages aient été reçus ou si le moniteur de file d'attente détecte que la procédure stockée ne reçoit pas de messages après un court délai d'attente, le moniteur de file d'attente considère que la procédure stockée a échoué. Dans ce cas, le moniteur de file d'attente cesse d'activer la procédure stockée.