IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Historisation des modifications


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 205
    Points : 305
    Points
    305
    Par défaut Historisation des modifications
    Bonjour,
    Je souhaiterai mettre en place une historisation des modifications opérées sur une BD MS SQL.
    Pour cela je vais créer une table qui collectera toutes les modifications, quelque soit la table modifiée.
    Cette table des historiques sera alimentée via les triggers.
    Je voudrai savoir :
    _1_ comment récupérer le nom du champ modifié ?
    _2_ Avoir une ligne par modification dans le cas où plusieurs modifications sur la ligne qui va être actualisée/ Rafraichie ?

    J'envisage que ma table de collecte des historiques contienne :
    _ La date-heure de la modification
    _ Le nom de la Table modifiée
    _ Le nom du champ modifié.
    _ La valeur avant modification
    _ La valeur après modification

    Par avance, merci à ceux qui se pencheront sur ce problème qui peut intéresser du monde.

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 352
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 352
    Points : 20 359
    Points
    20 359
    Par défaut
    salut il faudrait préciser si la base de données est associée à un "front-end" c'est à dire à une programme client ou bien un navigateur web.Donc plus de précisions sur l'architecture du projet.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 205
    Points : 305
    Points
    305
    Par défaut Complement.
    Bonjour,
    La base de données MS SQL est celle d'un ERP.
    Elle est exploitée par un "Front-end" de ma composition.
    Pour le moment, pas d'exploitation par un navigateur WEB.
    Je ne suis pas un expert des serveurs SQL, comme vous l'aviez deviné.
    Je ne cherche qu'à faire un traçage des interventions sur la base de données.


    J'envisage que ma table de collecte des historiques contienne :
    _ La date-heure de la modification
    _ L'identifiant de l'opérateur <-- j'avais oublié
    _ Le nom de la Table modifiée
    _ Le nom du champ modifié.
    _ La valeur avant modification
    _ La valeur après modification

    Par avance, merci à ceux qui se pencheront sur ce problème qui peut intéresser du monde.

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 352
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 352
    Points : 20 359
    Points
    20 359
    Par défaut
    salut la solution que je voulais proposer c'était par le code donc si vous faites un insert dans une table il suffit de dupliquer la commande et faire un insert dans une table temporaire.
    Cependant si le workflow bref le fonctionnel passe par un ERP aille ça risque d'être compliqué à moins de pouvoir paramétrer l'ERP

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 084
    Points : 38 377
    Points
    38 377
    Billets dans le blog
    9
    Par défaut
    Pour conserver l'historique des valeurs, vous pouvez utiliser les tables temporelles

    Voir ICI

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 084
    Points : 38 377
    Points
    38 377
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    salut la solution que je voulais proposer c'était par le code donc si vous faites un insert dans une table il suffit de dupliquer la commande et faire un insert dans une table temporaire.
    Cependant si le workflow bref le fonctionnel passe par un ERP aille ça risque d'être compliqué à moins de pouvoir paramétrer l'ERP
    La couche applicative ne peut pas garantir le suivi des modifications dans la base de données, seul le SGBD peut le faire.
    D'une part, sur une base de données, on n'est presque jamais seul, d'autre part, les sources de modifications sont multiples (différents programmes, utilitaires, triggers...) et tout ça s'exécute en parallèle et parfois en multi-thread !
    Qu'on soit sur un ERP ou pas ne change rien à l'affaire.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 736
    Points : 52 448
    Points
    52 448
    Billets dans le blog
    5
    Par défaut
    SQL Server dispose d'un mécanisme de tables d'historisation tel que défini par la norme SQL (table temporelles). La mise en œuvre de ce mécanisme ne change rien à l'application et permet des interrogations temporelles (quel était l'état de mes données au 3/7:2021 à 0h28) ou encore sur une plage de temps...

    Lisez l'article que j'ai écrit à ce sujet et qui est la présentation que j'en ai fait pour Microsoft France :
    https://blog.developpez.com/sqlpro/p...r-presentation

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 352
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 352
    Points : 20 359
    Points
    20 359
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    La couche applicative ne peut pas garantir le suivi des modifications dans la base de données, seul le SGBD peut le faire.
    Qu'on soit sur un ERP ou pas ne change rien à l'affaire.
    Apparemment mon message a mal été compris.
    est-ce que vous avez déjà utilisé un ERP ?
    Un ERP c'est une techno propriétaire donc on ne peut pas faire ce que l'on veut

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 084
    Points : 38 377
    Points
    38 377
    Billets dans le blog
    9
    Par défaut
    Au contraire, c'est mon message que vous n'avez pas compris.

    Encore une fois, qu'on soit sur un ERP ou sur un applicatif maison, une solution applicative pour historiser les données comportera des failles. Alors que les tables temporelles sont faites pour ça.

Discussions similaires

  1. Réponses: 14
    Dernier message: 08/02/2011, 11h39
  2. Réponses: 1
    Dernier message: 02/02/2011, 16h11
  3. Historisation des modifications effectuées sur une table SQL
    Par Drooxy dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/10/2007, 14h29
  4. Historiser des modifications et les anciennes valeurs
    Par el_quincho dans le forum Access
    Réponses: 4
    Dernier message: 29/05/2006, 17h49
  5. Gestion des modifications pour un enregistrement
    Par Pascal Jankowski dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/03/2004, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo