Contexte d’activation interne

S’applique à :SQL ServerAzure SQL Managed Instance

Cet article décrit le contexte d’exécution d’une procédure stockée démarré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 EXECUTE AS clause, deux emprunts d’identité se produisent. SQL Server emprunte d’abord l’identité de l'utilisateur spécifié pour la file d'attente et exécute la procédure stockée. Lorsque la procédure stockée s’exécute, la procédure emprunte l’identité de l’utilisateur spécifié dans la EXECUTE AS clause de la procédure.

L’utilisateur spécifié pour une liaison de service distant est généralement un utilisateur différent de celui spécifié pour l’activation. Les autorisations requises pour chaque utilisateur diffèrent également. L’utilisateur de liaison de service distant n’a pas besoin d’autorisation de lire à partir de la file d’attente ou d’exécuter des procédures stockées dans la base de données, tandis que l’utilisateur spécifié pour l’activation n’a pas besoin d’autorisation pour envoyer des messages au service. Pour plus d’informations sur les autorisations utilisateur, consultez Identité et contrôle d’accès (Service Broker) et sécurité de la boîte de 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 démarrée par Service Broker, SQL Server écrit la sortie et PRINT les instructions dans le journal des RAISERROR 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 à partir 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 pas une 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 une discussion sur la gestion des transactions dans les procédures stockées activées, consultez la 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 ferme sans recevoir de messages, 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.

Écran

Pour vérifier l’utilisateur exécutant la procédure d’activation, vous pouvez utiliser des événements étendus (l’événement broker_activation avec les actions username et server_principal_name), ou la vue de gestion dynamique sys.dm_broker_activated_tasks, qui retourne des informations sur la base de données principal_id configurée dans la file d’attente.