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

Administration SQL Server Discussion :

Log des actions utilisateurs


Sujet :

Administration SQL Server

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut Log des actions utilisateurs
    Bonjour,

    J'aurais juste voulu savoir s'il existait un tool ou quelque chose d'autre qui permettrait de savoir qui a fait quoi dans une DB ?

    J'ai bien tenté une recherche mais avec log comme mot clef, je ne tombe que sur des résultats concernant le journal de transaction.

    Jusqu'ici, je procédais en ajoutant des colonnes dans les tables pour lesquelles je souhaitais avec les informations concernant la création d'une ligne et la dernière modification d'une ligne. Les informations en question étant l'utilisateur et la date, cela fait donc à chaque fois 4 colonnes en plus par table.

    Y a-t-il un meilleur moyen de procéder ?

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Salut,

    Tout dépend la granularité de ce que tu veux.

    Il existe les audits SQL Server (depuis 2008) qui te permettent de savoir quelles actions un utilisateur a effectué (modification du paramétrage d'un serveur, ajout d'un login, insert / update / delete dans une table etc ...)

    Si en revanche tu souhaites savoir quelles données ont été modifiées par un utilisateur par exemple il faudra compléter avec du Change Data Capture de SQL Server.

    Il est également possible de faire des audits par le biais des traces SQL Server mais l'impact est plus important en terme de performance.

    ++

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Ah ouais, j'ai oublié de le préciser mais je suis encore sous 2005...

    Sinon ce que je veux savoir ne se situe qu'au niveau des requêtes insert/update/delete.

    Enfin... Il est prévu de passer sur 2008 d'ici la fin de l'année en même temps que de mettre de nouveaux serveurs (pas trop tôt !). Je vais rester avec mes colonnes jusque-là et on verra après.

    Merci pour l'info !

    P.S. : Au passage, y a des trucs spéciaux à faire pour migrer de 2005 à 2008 ou bien je peux juste prendre mes DB et les mettre sur le nouveau serveur ?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 852
    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 852
    Points : 52 992
    Points
    52 992
    Billets dans le blog
    6
    Par défaut
    1) ce serait idiot de mettre en œuvre un truc lourd, long, complexe et peu performant à base de déclencheurs, alors qu'il existe dans la version 2008 3 moyens beaucoup moins intrusifs pour ce faire :
    • CHANGE TRACKING
    • CHANGE DATA CAPTURE
    • DATABASE AUDIT.


    2) détacher la base, la rattacher sur la nouvelle instance (moins d'une seconde)
    puis :
    1.1 - la mettre en version 2008 (ALTER DATABASE ??? SET COMPATIBILITY_LEVEL 100
    1.2 - recalculer TOUTES les statistiques en FULL SCAN (sp_updatestats)

    A +

  5. #5
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Concernant le point 1, je suis bien d'accord avec vous mais je n'aurai pas la version 2008 avant la fin de cette année (voir même le début de la prochaine).

    Concernant le point 2, un grand merci pour ces infos !

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 852
    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 852
    Points : 52 992
    Points
    52 992
    Billets dans le blog
    6

  7. #7
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    J'avais déjà lu cet article il y a pas mal de temps maintenant.

    Je ne suis intéressé que par l'historisation online. Et cela est assez facile à mettre en place donc je vais m'en tenir à l'ajout des colonnes.

    Par contre j'ai une remarque. Dans votre article, on peut lire :
    1.1 – l’historisation en ligne (IN LINE) :
    Elle est constituée de colonnes rajoutées à la table afin de connaître deux groupes d’informations :
    - la date/heure et le nom d’utilisateur SQL de celui qui à inséré la ligne;
    - la date/heure et le nom d’utilisateur SQL de celui qui à modifié la ligne en dernier.
    Et de déclencheurs associés pour mettre à jour ces données (triggers INSERT et UPDATE).
    Personnellement, je renseigne les informations concernant celui qui a inséré la ligne en spécifiant une valeur par défaut à ces deux colonnes.
    SYSTEM_USER pour la colonne contenant l'utilisateur et GETDATE() pour la colonne contenant la date et l'heure.

    Y a-t-il une raison particulière pour avoir choisi d'utiliser un trigger ?

  8. #8
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Encore une question...

    Je suis dans le même temps en grande discussion sur le forum schéma concernant la modélisation d'un MCD pour une nouvelle DB que je développe.

    Concernant ce log, on me suggère de ne pas polluer les tables devant en faire l'objet mais plutôt de créer une entité parallèle suffixé par "_log" (par exemple) qui contiendra les 4 colonnes pour l'historisation inline + la clef référençant la table principale.

    Cela poserait-il un problème quelconque (performance, fragmentation, etc. ) ?

  9. #9
    Membre averti
    Homme Profil pro
    R&D
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : R&D

    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 406
    Points
    406
    Par défaut
    Kropernic,

    Cette question est bien croisée avec celle concernant les types des clés.

    Imagine, que tu a les ID homogènes. On part sur le concept "hyper-key" cela veut dire, l'ID est généré de même maniéré pour tous les objets.

    Registry (ID registry, ID entity type)
    tous les autres entités doivent référencer un objet correspondant de Registry, i.e.
    Contact(ID contact, nom, prénom, ID registry)

    On ajout le service d'audit :
    AuditLog(ID log, ID registry, ID action, date&time, ID user)

    Comme cela tu peux évoluer tes services sans changer la structure des entités.

  10. #10
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Citation Envoyé par Serguei_TARASSOV Voir le message
    Kropernic,

    Cette question est bien croisée avec celle concernant les types des clés.

    Imagine, que tu a les ID homogènes. On part sur le concept "hyper-key" cela veut dire, l'ID est généré de même maniéré pour tous les objets.

    Registry (ID registry, ID entity type)
    tous les autres entités doivent référencer un objet correspondant de Registry, i.e.
    Contact(ID contact, nom, prénom, ID registry)

    On ajout le service d'audit :
    AuditLog(ID log, ID registry, ID action, date&time, ID user)

    Comme cela tu peux évoluer tes services sans changer la structure des entités.
    Donc si je comprends bien, tu proposes d'ajouter une colonne à chaque table devant être auditée. Colonne qui sera une clef étrangère de la table Registry.

    Ensuite, une table AuditLog qui trace toutes les actions des users.


    Pourquoi pas...

    Question : Quels avantages/inconvénients par rapport à l'historisation "INLINE" comme expliqué dans l'article de sqlpro ? (manière que j'utilisais déjà dans le passé)

  11. #11
    Membre averti
    Homme Profil pro
    R&D
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : R&D

    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 406
    Points
    406
    Par défaut
    L'approche "Registry" permet rajouter les service en fonction d'évolution sans changer les entités. I.e. rajouter de même manière la sécurité fonctionnelle ou regroupement des objets.

    L'historisation "INLINE" concerne la création et dernière modification, l'approche "audit" fait l'historique des modifications. C'est de l'architecte à choisir selon les besoins.

Discussions similaires

  1. Fichier de log des actions effectuées
    Par Kanetsugu dans le forum C#
    Réponses: 3
    Dernier message: 29/02/2012, 16h23
  2. [8i] Log des actions grant et revoke
    Par mamiberkof dans le forum Administration
    Réponses: 0
    Dernier message: 04/01/2012, 11h13
  3. Log table action utilisateurs
    Par ouiouioui dans le forum Débuter
    Réponses: 4
    Dernier message: 24/07/2010, 10h58
  4. Win Server 2003 - Logs des connexions utilisateurs ?
    Par nerick dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 14/05/2008, 13h42
  5. [Batch] Récupérer un fichier .log des actions du .bat
    Par rob81 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 06/11/2007, 08h54

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