Je crée un déclencheur de niveau serveur dans SQL 2008 pour créer des tables de journalisation et les supprimer. J'ai besoin d'enregistrer la base de données dans laquelle la table a été créée. J'ai d'abord créé une colonne avec une valeur par défaut de db_name(), mais toujours master. Ensuite, j'ai essayé d'utiliser dans ma déclaration d'insertion:Obtenir le nom de la base de données à partir de DDL Trigger
EVENTDATA().value('(/EVENT_INSTANCE/DatabaseName)[1]','nvarchar(max)')
Cela a fonctionné pendant un certain temps, mais tout à coup il a commencé maître d'enregistrement pour toutes les créations de table et gouttes quelle que soit la base de données de la table était dans toutes les gouttes de table ont. été fait en utilisant SSMS. Est-ce que quelqu'un sait pourquoi je vois ce comportement? Plus important encore, quelqu'un sait-il comment enregistrer la bonne base de données?
EDIT: J'ai trouvé un article qui me fait penser que ce que je fais est incorrect. Apparemment, vous ne devez capturer que create_table et drop_table à partir d'un trigger de base de données et non à partir d'un trigger sur le serveur. Je voudrais toujours laisser la question ouverte au cas où quelqu'un sait comment contourner cela.
Merci pour le lien MSDN. J'ai recherché MSDN pour la liste et n'ai pas pu la localiser. – jhale
De rien, heureux d'être utile. –