Déclencheurs de connexion

Nouveau : 12 décembre 2006

Les déclencheurs de connexion lancent des procédures stockées en réponse à un événement LOGON. Cet événement est déclenché lorsqu'une session utilisateur est établie avec une instance de SQL Server. Les déclencheurs de connexion sont activés au terme de la phase d'authentification de connexion mais avant l'établissement de la session utilisateur. Par conséquent, tous les messages provenant du corps du déclencheur et habituellement destinés à l'utilisateur, (les messages et les messages d'erreur de l'instruction PRINT, par exemple), sont dirigés vers le journal d'erreurs SQL Server. Les déclencheurs de connexion ne sont pas activés si l'authentification échoue.

Vous pouvez faire appel aux déclencheurs de connexion pour auditer et contrôler les sessions de serveur en effectuant, par exemple, le suivi de l'activité de connexion, en restreignant les connexions à SQL Server ou en limitant le nombre des sessions pour une connexion spécifique. Par exemple, dans le code suivant, le déclencheur de connexion refuse une tentative de connexion à SQL Server initiée par la connexion login_test si trois sessions utilisateur ont déjà été créées par cette connexion.

USE master;
GO
CREATE LOGIN login_test WITH PASSWORD = '3KHJ6dhx(0xVYsdf' MUST_CHANGE,
    CHECK_EXPIRATION = ON;
GO
GRANT VIEW SERVER STATE TO login_test;
GO
CREATE TRIGGER connection_limit_trigger
ON ALL SERVER WITH EXECUTE AS 'login_test'
FOR LOGON
AS
BEGIN
IF ORIGINAL_LOGIN()= 'login_test' AND
    (SELECT COUNT(*) FROM sys.dm_exec_sessions
            WHERE is_user_process = 1 AND
                original_login_name = 'login_test') > 3
    ROLLBACK;
END;

Notez que l'événement LOGON correspond à l'événement de trace SQL AUDIT_LOGIN qui peut être utilisé dans les notifications d'événement. La différence principale entre les déclencheurs et les notifications d'événement est que le lancement des déclencheurs est synchronisé avec celui des événements alors que les notifications d'événement sont asynchrones. Cela signifie, entre autre, que si vous souhaitez arrêter l'établissement d'une session, vous devez faire appel à un déclencheur de connexion. Une notification d'événement sur un événement AUDIT_LOGIN ne peut pas être utilisée à cette fin.

Capture des données d'événements des déclencheurs de connexion

Pour capturer des données XML relatives à des événements LOGON à utiliser dans des déclencheurs de connexion, utilisez la fonctionEVENTDATA. Pour plus d'informations, consultez Utilisation de la fonction EVENTDATA. L'événement LOGON retourne le schéma des données d'événement suivant :

<EVENT_INSTANCE>

    <EventType>event_type</EventType>

    <PostTime>post_time</PostTime>

    <SPID>spid</SPID>

    <ServerName>server_name</ServerName>

<LoginName>login_name</LoginName>

<LoginType>login_type</LoginType>

<SID>sid</SID>

<ClientHost>client_host</ClientHost>

<IsPooled>is_pooled</IsPooled>

</EVENT_INSTANCE>

Élément Description

<EventType>

Contient LOGON.

<PostTime>

Contient l'heure de demande d'établissement d'une session.

<SID>

Contient le flux binaire codé en base 64 du numéro d'identification de sécurité (SID) correspondant au nom de connexion spécifié.

<ClientHost>

Contient le nom d'hôte du client à partir duquel a été établie la connexion. La valeur est '&lt;local_machine&gt;' si le nom du serveur et du client sont identiques. Sinon, la valeur est l'adresse IP du client.

<IsPooled>

Valeur égale à 1 si la connexion est réutilisée à l'aide du groupement de connexions. Sinon, la valeur est 0.

Création, modification et suppression des déclencheurs de connexion

Ces déclencheurs peuvent être créés à partir de n'importe quelle base de données mais sont enregistrés au niveau du serveur et résident dans la base de données master.

Pour créer un déclencheur de connexion
Pour modifier un déclencheur de connexion
Pour supprimer un déclencheur de connexion

Obtention des informations sur les déclencheurs de connexion

Vous pouvez afficher des métadonnées sur les déclencheurs de connexion en interrogeant l'affichage catalogue sys.server_triggers.

Voir aussi

Concepts

Conseils d'utilisation sur l'exécution des déclencheurs de connexion
Déclencheurs DDL et déclencheurs DML
Conception et création de bases de données

Aide et Informations

Assistance sur SQL Server 2005