EVENTDATA (Transact-SQL)EVENTDATA (Transact-SQL)

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database nonAzure Synapse Analytics (SQL DW) nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Cette fonction retourne des informations sur les événements de serveur et de base de données.This function returns information about server or database events. Lorsqu’une notification d’événement est déclenchée et que le Service Broker spécifié reçoit les résultats, EVENTDATA est appelé.When an event notification fires, and the specified service broker receives the results, EVENTDATA is called. Un déclencheur DDL ou d’ouverture de session prend également en charge l’utilisation interne de EVENTDATA.A DDL or logon trigger also support internal use of EVENTDATA.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

  
EVENTDATA( )  

NotesRemarks

EVENTDATA ne retourne des données que si elles sont référencées directement au sein d’un déclencheur DDL ou d’ouverture de session.EVENTDATA returns data only when referenced directly inside of a DDL or logon trigger. EVENTDATA retourne la valeur Null si d’autres routines l’appellent, même si un déclencheur DDL ou d’ouverture de session appelle ces routines.EVENTDATA returns null if other routines call it, even if a DDL or logon trigger calls those routines.

Les données retournées par EVENTDATA ne sont pas valides après une transaction qui :Data returned by EVENTDATA is invalid after a transaction that

  • a appelé EVENTDATA explicitement ;called EVENTDATA explicitly
  • a appelé EVENTDATA implicitement ;called EVENTDATA implicitly
  • est en validation ;commits
  • est restaurée.is rolled back

Attention

EVENTDATA retourne des données XML qui sont envoyées au client au format Unicode, qui utilise 2 octets pour chaque caractère.EVENTDATA returns XML data, sent to the client as Unicode that uses 2 bytes for each character. Le code XML retourné par EVENTDATA peut représenter ces points de code Unicode :EVENTDATA returns XML that can represent these Unicode code points:

0x0009

0x000A

0x000D

>= 0x0020 && <= 0xD7FF

>= 0xE000 && <= 0xFFFD

XML ne peut ni exprimer ni autoriser certains caractères susceptibles d’apparaître dans les identificateurs et les données Transact-SQLTransact-SQL.XML cannot express, and will not permit, some characters that can appear in Transact-SQLTransact-SQL identifiers and data. Les caractères ou données ayant des points de code non représentés dans la liste précédente sont mappés sur un point d'interrogation (?).Characters or data that have code points not shown in the previous list are mapped to a question mark (?).

Les mots de passe ne s’affichent pas pendant l’exécution d’instructions CREATE LOGIN ou ALTER LOGINPasswords do not display when CREATE LOGIN or ALTER LOGIN statements execute. de façon à préserver la sécurité de connexion.This protects login security.

Schémas retournésSchemas Returned

EVENTDATA renvoie une valeur dont le type de données est xml.EVENTDATA returns a value of data type xml. Par défaut, la définition de schéma pour tous les événements est installée dans ce répertoire : C:\Program Files\Microsoft SQL Server\nnnC:\Program Files\Microsoft SQL Server\nnn\Tools\Binn\schemas\sqlserver\2006\11\events\events.xsd.By default, the schema definition for all events installs in this directory: C:\Program Files\Microsoft SQL Server\nnnC:\Program Files\Microsoft SQL Server\nnn\Tools\Binn\schemas\sqlserver\2006\11\events\events.xsd.

La page web Schémas XML Microsoft SQL Server comporte également le schéma d’événement.The Microsoft SQL Server XML Schemas web page also has the event schema.

Pour extraire le schéma pour un événement particulier, recherchez dans le schéma le type complexe EVENT_INSTANCE_<event_type>.To extract the schema for any particular event, search the schema for the Complex Type EVENT_INSTANCE_<event_type>. Par exemple, pour extraire le schéma de l’événement EVENT_INSTANCE_DROP_TABLE, recherchez DROP_TABLE dans le schéma.For example, to extract the schema for the DROP_TABLE event, search the schema for EVENT_INSTANCE_DROP_TABLE.

ExemplesExamples

A.A. Interrogation des données d'événement dans un déclencheur DDLQuerying event data in a DDL trigger

Cet exemple crée un déclencheur DDL qui empêche la création de nouvelles tables de base de données.This example creates a DDL trigger that prevents creation of new database tables. La requête XQuery effectuée sur les données XML générées par EVENTDATA a pour effet de capturer l’instruction Transact-SQLTransact-SQL qui active le déclencheur.Use of XQuery against the XML data generated by EVENTDATA captures the Transact-SQLTransact-SQL statement that fires the trigger. Voir Informations de référence sur le langage XQuery (SQL Server) pour plus d’informations.See XQuery Language Reference (SQL Server) for more information.

Notes

Lorsque vous utilisez Résultats dans des grilles dans SQL Server Management StudioSQL Server Management Studio pour interroger l’élément <TSQLCommand>, les sauts de ligne n’apparaissent pas dans le texte de la commande.When using Results to Grid in SQL Server Management StudioSQL Server Management Studio to query the <TSQLCommand> element, line breaks in the command text do not appear. Utilisez plutôt l’option Résultats dans du texte.Use Results to Text instead.

USE AdventureWorks2012;  
GO  
CREATE TRIGGER safety   
ON DATABASE   
FOR CREATE_TABLE   
AS   
    PRINT 'CREATE TABLE Issued.'  
    SELECT EVENTDATA().value  
        ('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)')  
   RAISERROR ('New tables cannot be created in this database.', 16, 1)   
   ROLLBACK  
;  
GO  
--Test the trigger.  
CREATE TABLE NewTable (Column1 int);  
GO  
--Drop the trigger.  
DROP TRIGGER safety  
ON DATABASE;  
GO  

Notes

Pour retourner des données d’événement, utilisez la méthode XQuery value() plutôt que la méthode query() .To return event data, use the XQuery value() method instead of the query() method. La méthode query() renvoie des instances XML et CR/LF (retour chariot/saut de ligne) à séquence d’échappement perluète dans la sortie, tandis que la méthode value() retourne des instances CR/LF invisibles dans la sortie.The query() method returns XML and ampersand-escaped carriage return and line feed (CR/LF) instances in the output, while the value() method renders CR/LF instances invisible in the output.

B.B. Création d'une table de journal avec données d'événements dans un déclencheur DDLCreating a log table with event data in a DDL trigger

Cet exemple crée une table pour stocker des informations sur tous les événements de niveau base de données, et la remplit avec un déclencheur DDL.This example creates a table for information storage about all database level events, and populates that table with a DDL trigger. La requête XQuery effectuée sur les données XML générées par EVENTDATA a pour effet de capturer le type d’événement et l’instruction Transact-SQLTransact-SQL.Use of XQuery against the XML data generated by EVENTDATA captures the event type and the Transact-SQLTransact-SQL statement.

USE AdventureWorks2012;  
GO  
CREATE TABLE ddl_log (PostTime datetime, DB_User nvarchar(100), Event nvarchar(100), TSQL nvarchar(2000));  
GO  
CREATE TRIGGER log   
ON DATABASE   
FOR DDL_DATABASE_LEVEL_EVENTS   
AS  
DECLARE @data XML  
SET @data = EVENTDATA()  
INSERT ddl_log   
   (PostTime, DB_User, Event, TSQL)   
   VALUES   
   (GETDATE(),   
   CONVERT(nvarchar(100), CURRENT_USER),   
   @data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'),   
   @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(2000)') ) ;  
GO  
--Test the trigger.  
CREATE TABLE TestTable (a int);  
DROP TABLE TestTable ;  
GO  
SELECT * FROM ddl_log ;  
GO  
--Drop the trigger.  
DROP TRIGGER log  
ON DATABASE;  
GO  
--Drop table ddl_log.  
DROP TABLE ddl_log;  
GO  

Voir aussiSee Also

Utiliser la fonction EVENTDATA Use the EVENTDATA Function
Déclencheurs DDL DDL Triggers
Notifications d'événements Event Notifications
Déclencheurs de connexionLogon Triggers