0
votes

Comment puis-je savoir ce qui a changé dans une base de données SQL pendant un certain temps?

J'ai un système pour gérer des imprimantes d'une entreprise et j'ai besoin de comprendre comment fonctionne le flux de travail entre le site Web et la base de données en sachant ce qui est ajouté / modifié dans la base de données avec chaque interaction de l'utilisateur. Existe-t-il un moyen de trouver ou de créer une sorte de journal pour une base de données ou même l'ensemble du serveur SQL qui peut me montrer ce dont j'ai besoin?


7 commentaires

Dupliqué possible de Changements de suivi de la base de données Microsoft SQL Server


C'est pour DDL, @sami, j'ai lu ceci comme l'utilisateur signifie DML. De toute façon, le "meilleur" moyen de faire cela (à mon avis) est gérer dans le SP selon vous pour gérer les relevés DML.


Ce n'est pas facile à accomplir. Vous devez concevoir votre niveau de données de telle manière. Cela signifie avoir une piste de mises à jour et d'inserts.


Bien sûr, j'ai une lecture du bon manuel, sur Modifier le suivi


@Larnu CDC est DML, non?


Pas sûr si vous souhaitez suivre les modifications apportées aux données, les structures de table ou les deux?


Je viens de découvrir un outil qui fait exactement ce dont j'ai besoin, c'est ce qu'on appelle le profileur SQL Server. Merci à tous pour l'aide.


3 Réponses :



0
votes

Je pense que ce que vous cherchez sont des déclencheurs. Vous pouvez créer des tables pour enregistrer les données actuellement mises à jour ou modifiées et utiliser des déclencheurs pour alimenter automatiquement les données de la table des journaux de n'importe quel changement

CREATE OR REPLACE TRIGGER [trigger_name]
BEFORE DELETE OR INSERT OR UPDATE ON [table_name] 
  FOR EACH ROW 
  WHEN [some condition] 
  DECLARE 
  [variable declaration]
  BEGIN 
     [create an entry in the log table here]
  END; 


6 commentaires

@Sami sûr; Je l'utilise actuellement dans deux de mes systèmes SQLS SQLS, mais ces jours-ci, j'utiliserais une installation intégrée plutôt que de rouler le mien


La question étiquetée avec SQL Server tag @caiusjard qui ne prend pas en charge remplacer et ce code lancera syntaxe incorrecte à proximité "Remplacer" erreur "Remplacer" . C'est une syntaxe complètement incorrecte pour SQL Server. SQL Server ne prend également pas en charge pour chaque ligne et sur table_name doit être juste après le nom de la gâchette. Visitez Créer la gâchette


Eesh .. C'est l'un des problèmes avec Stackoverflow; Les gens sont si pédants. Lorsqu'une question est posée et qu'elle a répondu, cela ne signifie pas que l'OP a remis une responsabilité complète de leur développement à un étranger sur Internet, qui doit ensuite fournir une solution absolument parfaite compte tenu de toutes les éventualités et qu'il est donc raisonnable d'exiger qu'ils fixent quelque chose Comme l'inuisse que «Semicolon manquant sur la ligne 6», l'OP a encore une responsabilité ultime pour le développement et vous disputiez sur un aspect de la syntaxe qui est duvondre de nombril. Il est clair que c'est pseudocode; Supprimer le ou remplacer et laissez-le aller


@Caiusjard Je suis désolé mais c'était ma première fois en train de poster une réponse, pouvez-vous expliquer pourquoi ce n'est pas la bonne approche?


La plainte de Sami est que vous n'avez pas fourni de solution text-parfaite que l'OP ne peut que COPYPYPASTA et courir. Mon inquiétude est que, bien que cela fonctionne, SQL Server a donc intégré de manière non nécessaire de "polluer" un domaine de données d'application avec des déclencheurs et des tables d'historique. La plupart des DBA sont généralement froncés sur l'utilisation de déclencheurs et le MSDN pour le suivi des changements est quelque peu dépêchant de cette approche. Je ne crois pas que la réponse devrait être évitée parce que ce n'est pas nécessairement faux, de la même manière que ce n'est pas nécessairement faux d'utiliser un couteau comme un tournevis. C'est juste que SQL Server a un tournevis :)


@Caiusjard comprit! Merci pour ça! :)



0
votes

Juste pour l'enregistrement, un outil de cet objectif est exceptionnel et est installé avec SQL Server, elle s'appelle le profileur SQL Server.


0 commentaires