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 :

Les audits avec SQL Server, détails de l’évènement sp_configure … [2008R2]


Sujet :

Administration SQL Server

  1. #1
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Points : 1 668
    Points
    1 668
    Billets dans le blog
    8
    Par défaut Les audits avec SQL Server, détails de l’évènement sp_configure …
    Ma question fait référence à l’excellent turorial réalisé par David BARBARIN (mikedavem) : Les audits avec SQL Server 2008
    et plus précisément au paragraphes et code T-SQL relatifs à l’objectif "Auditer et enregistrer les changements d'état du serveur de bases de données".
    Exemple :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    EXEC sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    EXEC sp_configure 'xp_cmdshell' , 1;
    GO
    RECONFIGURE;
    Ma question est la suivante :
    Existe-t-il un moyen de visualiser à travers la fonction fn_get_audit_file le détails de l’évènement (c.à.d. le détails de l’opération effectuée) ? En effet, actuellement le résultat du select ci-dessous (colonne f.statement) ne donne pas le détails de l’évènement( par exemple valeur de l’option de configuration avant et après Exec sp_configure). La colonne f.statement affiche uniquement la mention "RECONFIGURE;" !

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT 
    	f.event_time, 
    	f.session_id,
    	a.name AS action_name,
    	m.class_type_desc,
    	a.covering_action_name,
    	f.statement,
    	f.server_principal_name
    FROM fn_get_audit_file('E:\SQL2008R2\Audit\Audit_Srv_File_Change_Status_Server*', DEFAULT, DEFAULT) AS f
    INNER JOIN sys.dm_audit_class_type_map AS m
    ON m.class_type = f.class_type
    INNER JOIN sys.dm_audit_actions AS a
    ON a.action_id = f.action_id 
    ORDER BY f.event_time DESC

    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    event_time	session_id	action_name	class_type_desc	covering_action_name	statement
    2014-05-07 09:49:24.7713299	56	ALTER SETTINGS	SERVER	SERVER_OPERATION_GROUP	RECONFIGURE;
    Pour trouver le détail de l’opération effectuée, il faut aller consulter le détail des journaux windows (nœud application), faire le cas échéant un filtre sur l’évennement 15457. Pour afficher l’exemple de résultat ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Evénement 15457, MSSQLSERVER 
    [Onglet général]  
       L'option de configuration 'xp_cmdshell' est passée de 0 à 1. Pour installer, exécutez l'instruction RECONFIGURE.
    Ce serait beaucoup plus pratique, si on pouvait avoir cette même information directement au travers la fonction fn_get_audit_file(..).

    Merci,

    A+,
    "Une idée mal écrite est une idée fausse !"
    http://hamid-mira.blogspot.com

  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
    Hello,

    Oui tu as raison mais malheureusement pour le moment c'est un manque au niveau de l'audit SQL Server (j'avais demandé à Microsoft à l'époque mais il faudrait peut être voir s'il n'y a pas d'item connect sur le sujet ... je vais regarder si j'ai un peu de temps)

    Un moyen de contourner serait par exemple de recouper avec le journal des erreurs SQL Server par exemple en se servant de la date (qui est en UTC si je me souviens bien) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC xp_readerrorlog 0, 1, N'Configuration option', NULL, 2014-05-07 11:49:24, '2014-05-07 11:49:25', N'ASC'
    Ce n'est pas parfait comme méthode bien entendu ...

    ++

  3. #3
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Points : 1 668
    Points
    1 668
    Billets dans le blog
    8
    Par défaut
    Je réagis un peu tardivement. En effet, comme beaucoup d’entre vous j’ai fait le pont !

    Merci David pour ce complément d’information.

    La solution que vous proposez me parait effectivement une bonne idée (peut-être même la seule solution) pour contourner le problème, et ce, en attendant que Microsoft apporte des améliorations sur le système de l’audit, notamment le contenu de la colonne statement en cas de modification d’une option de configuration du serveur.

    Sachant qu’on ne pourra que rapprocher, par exemple à une seconde près, les 2 colonnes LogDate (de xp_readerrorlog) et Event_Time (de fn_get_audit_file). D’après les tests que j’ai effectués, Il n’y a pas une égalité parfaite des 2 colonnes. En effet, cela s’explique par le type différent des 2 colonnes :
    LogDate (résultat de xp_readerrorlog) est de type DateTime et représente une date et heure locale, alors que Event_Time (résultat de fn_get_audit_file) est de type datetime2 et représentant une date et heure en UTC.

    Donc avec quelques transformations (UTC en heure locale), filtre sur la colonne Text, et un rapprochement des 2 colonnes (LogDate et Event_Time), la solution de contournement que vous proposez permet d’obtenir le résultat attendu, c.à.d. le contenu de la colonne ‘Text’ de xp_readerrorlog où on dispose enfin du détail de l’évènement.

    Merci,

    A+,
    "Une idée mal écrite est une idée fausse !"
    http://hamid-mira.blogspot.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment éviter les collusions avec sql server ?
    Par Kropernic dans le forum VB.NET
    Réponses: 7
    Dernier message: 29/07/2010, 14h38
  2. Les audits avec SQL Server 2008
    Par mikedavem dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 21/06/2010, 07h40
  3. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  4. Gérer les dates avec SQL Server 2000
    Par saby dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/01/2006, 18h06
  5. Gérer les queue avec sql server ?
    Par devdev dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 17/06/2004, 17h38

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