Maison >base de données >tutoriel mysql >Comment puis-je enregistrer les instructions SQL affectant une table spécifique dans SQL Server ?

Comment puis-je enregistrer les instructions SQL affectant une table spécifique dans SQL Server ?

DDD
DDDoriginal
2025-01-03 01:00:39205parcourir

How Can I Log the SQL Statements Affecting a Specific Table in SQL Server?

Création de déclencheurs pour enregistrer le SQL affecté dans SQL Server

Dans SQL Server 2008, vous pouvez créer des déclencheurs pour capturer le SQL qui modifie une table et enregistrez-le à des fins d'audit.

Déclencheur Définition :

CREATE TRIGGER [dbo].[triggerAfterUpdate] 
   ON  [dbo].[TableWithMysteryUpdate] 
   AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

    INSERT INTO [dbo].[LogTable] (
        ModifiedDate,
        ModifyingSQL
    )
    VALUES (
        GETDATE(),
        EVENTDATA()
    );
END

Définition de la table de journal :

CREATE TABLE [dbo].[LogTable] (
    [LogID] [INT] NOT NULL IDENTITY(1, 1),
    [ModifiedDate] [DATETIME] NOT NULL,
    [ModifyingSQL] [NVARCHAR](MAX) NOT NULL
);

Exemple d'utilisation :

Après la création le déclencheur, toutes les mises à jour de la table [dbo].[TableWithMysteryUpdate] seront enregistrées dans le [dbo].[LogTable].

Remarques supplémentaires :

  • La fonction EVENTDATA() capture l'instruction SQL exécutée qui a déclenché l'événement.
  • La fonction GETDATE() enregistre la date et l'heure de la mise à jour.
  • Vous pouvez personnaliser la table de journal pour inclure des informations supplémentaires telles que l'utilisateur qui a effectué la mise à jour ou les lignes concernées.
  • Cette approche offre une visibilité sur le SQL qui modifie des tables spécifiques sans nécessiter de connaissances approfondies de la base de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn