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 :

Information sur l’exécution d'une requête (bdd configuré en single_user toute seule)


Sujet :

Administration SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 20
    Points
    20
    Par défaut Information sur l’exécution d'une requête (bdd configuré en single_user toute seule)
    Bonjour à tous,

    sur le serveur d'un client, plus personne ne pouvait se connecter la semaine dernière car la bdd été configuré en single USER.

    dans l'observateur d’événement j'ai cet event:

    Définition de l'option de base de données SINGLE_USER avec la valeur ON pour la base de données db_BDD


    dans les logs sql j'ai ca

    Date 16/12/2016 04:00:17
    Journal SQL Server (Archive n°1 - 16/12/2016 11:07:00)

    Source spid65

    Message
    Setting database option SINGLE_USER to ON for database db_BDD.




    Est ce qu'il y a un moyen de savoir ce qui c'est passé ?
    Trouvé si quelqu'un, un programme ou virus a fait une manipulation ou exécuter un script pour effectuer cette modification ?



    merci d'avance

  2. #2
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 816
    Points : 1 354
    Points
    1 354
    Billets dans le blog
    2
    Par défaut
    si tu as de la chance La fonctionnalité de trace par défaut peuvent vous aider a récupérer les information d'opération Alter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    DECLARE @current VARCHAR(500);
    DECLARE @start VARCHAR(500);
    DECLARE @indx INT;
    SELECT @current = path
    FROM sys.traces
    WHERE is_default = 1;
    SET @current = REVERSE(@current)
    SELECT @indx = PATINDEX('%\%', @current)
    SET @current = REVERSE(@current)
    SET @start = LEFT(@current, LEN(@current) - @indx) + '\log.trc';
    -- CHNAGE FILER AS NEEDED
    SELECT CASE EventClass
    WHEN 164 THEN 'Object:Altered'
    END, DatabaseName, ObjectName, HostName, ApplicationName, LoginName, StartTime
    FROM::fn_trace_gettable(@start, DEFAULT)
    WHERE EventClass =164 AND EventSubclass = 0 AND DatabaseID <> 2
    ORDER BY StartTime DESC

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    c'est activé, mais a priori le log commence au moment ou on a joué le script pour remettre la bdd de single à multi user.

    Je sais pas si c'est normal d'ailleurs ou si c'est que les logs on été supprimé au passage ?

  4. #4
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 816
    Points : 1 354
    Points
    1 354
    Billets dans le blog
    2
    Par défaut
    le nbre max du fichier du trace par défaut est définit a 5 avec un taille max de 20MO

    donc le retour du trace en arriéré est un peut limitée

    voici un petit exemple du déclencheur pour faire l'audit et le trace prochainement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    use master;
    use master;
    CREATE TABLE [master].[dbo].[DDLEVENTLOG] ( 
    [SERVERNAME]         VARCHAR(128)                         NULL,
    [DATABASENAME]       VARCHAR(128)                         NULL,
    [EVENTDATE]          DATETIME                             NULL DEFAULT (getdate()),
    [SPID]               INT                                  NULL,
    [LOGINNAME]          VARCHAR(128)                         NULL,
    [USERNAME]           VARCHAR(128)                         NULL,
    [SYSTEMUSER]         VARCHAR(128)                         NULL,
    [CURRENTUSER]        VARCHAR(128)                         NULL,
    [ORIGINALUSER]       VARCHAR(128)                         NULL,
    [HOSTNAME]           VARCHAR(128)                         NULL,
    [APPLICATIONNAME]    VARCHAR(128)                         NULL,
    [PROGRAMNAME]        VARCHAR(128)                         NULL,
    [NET_TRANSPORT]      VARCHAR(128)                         NULL,
    [PROTOCOL_TYPE]      VARCHAR(128)                         NULL,
    [AUTH_SCHEME]        VARCHAR(128)                         NULL,
    [SERVER_NET_ADDRESS] VARCHAR(128)                         NULL,
    [SERVER_TCP_PORT]    VARCHAR(128)                         NULL,
    [CLIENT_IP_ADDRESS]  VARCHAR(128)                         NULL,
    [PHYSICAL_NET_TRANSPORT] VARCHAR(128)                     NULL,
    [EVENTTYPE]         VARCHAR(128)                          NULL,
    [SCHEMANAME]        VARCHAR(128)                          NULL,
    [OBJECTNAME]        VARCHAR(128)                          NULL,
    [OBJECTTYPE]        VARCHAR(128)                          NULL,
    [EVENTDATA]         XML                                   NULL,
    [COMMANDTEXT]       VARCHAR(max)                          NULL);
    --if everyone does not have access to this table, all non-sysadmins will fail in the login trigger.
    GRANT INSERT ON [dbo].[DDLEVENTLOG] TO PUBLIC;
    GO
    CREATE TRIGGER [trg_audit]
    ON ALL SERVER
    FOR        DDL_LOGIN_EVENTS
            , DDL_GDR_SERVER_EVENTS    
            , DDL_AUTHORIZATION_SERVER_EVENTS
            , CREATE_DATABASE
            , DROP_DATABASE
            , ALTER_DATABASE
    AS
     
        DECLARE @xmlEventData XML 
        SET @xmlEventData = eventdata() 
     
        INSERT INTO [master].[dbo].[DDLEVENTLOG]
        (
            SERVERNAME,
            DATABASENAME,
            EVENTDATE,
            SPID,
            LOGINNAME,
            USERNAME,
            SYSTEMUSER,
            CURRENTUSER,
            ORIGINALUSER,
            HOSTNAME,
            APPLICATIONNAME,
            PROGRAMNAME,
            NET_TRANSPORT,
            PROTOCOL_TYPE,
            AUTH_SCHEME,
            SERVER_NET_ADDRESS,
            SERVER_TCP_PORT,
            CLIENT_IP_ADDRESS,
            PHYSICAL_NET_TRANSPORT,
            EVENTTYPE,
            SCHEMANAME,
            OBJECTNAME,
            OBJECTTYPE,
            [EVENTDATA],
            COMMANDTEXT
        )
        SELECT    
             CONVERT(VARCHAR(128), @xmlEventData.query('data(/EVENT_INSTANCE/ServerName)'))   AS SERVERNAME,
             CONVERT(VARCHAR(128), @xmlEventData.query('data(/EVENT_INSTANCE/DatabaseName)')) AS DATABASENAME,
             GETDATE()                                                                        AS EVENTDATE,
             CONVERT(VARCHAR(128), @xmlEventData.query('data(/EVENT_INSTANCE/SPID)'))         AS SPID,
             CONVERT(VARCHAR(128), @xmlEventData.query('data(/EVENT_INSTANCE/LoginName)'))    AS LOGINNAME,
             CONVERT(VARCHAR(100), @xmlEventData.query('data(/EVENT_INSTANCE/UserName)'))     AS USERNAME,
             SUSER_SNAME()                                                                    AS SYSTEMUSER,
             CURRENT_USER                                                                     AS CURRENTUSER,
             ORIGINAL_LOGIN()                                                                 AS ORIGINALUSER,
             HOST_NAME()                                                                      AS HOSTNAME,
             APP_NAME()                                                                       AS APPLICATIONNAME,
             PROGRAM_NAME()                                                                   AS PROGRAMNAME,
             CONVERT(VARCHAR(128),ConnectionProperty('net_transport'))                        AS NET_TRANSPORT, 
             CONVERT(VARCHAR(128),ConnectionProperty('protocol_type'))                        AS PROTOCOL_TYPE,
             CONVERT(VARCHAR(128),ConnectionProperty('auth_scheme'))                          AS AUTH_SCHEME,
             CONVERT(VARCHAR(128),ConnectionProperty('local_net_address'))                    AS SERVER_NET_ADDRESS,
             CONVERT(VARCHAR(128),ConnectionProperty('local_tcp_port'))                       AS SERVER_TCP_PORT,
             CONVERT(VARCHAR(128),ConnectionProperty('client_net_address'))                   AS CLIENT_IP_ADDRESS,
             CONVERT(VARCHAR(128),ConnectionProperty('physical_net_transport'))               AS PHYSICAL_NET_TRANSPORT,
             CONVERT(VARCHAR(128), @xmlEventData.query('data(/EVENT_INSTANCE/EventType)'))    AS EVENTTYPE,
             CONVERT(VARCHAR(128), @xmlEventData.query('data(/EVENT_INSTANCE/SchemaName)'))   AS SCHEMANAME,
             CONVERT(VARCHAR(128), @xmlEventData.query('data(/EVENT_INSTANCE/ObjectName)'))   AS OBJECTNAME,
             CONVERT(VARCHAR(128), @xmlEventData.query('data(/EVENT_INSTANCE/ObjectType)'))   AS OBJECTTYPE,
             @xmlEventData                                                                    AS [EVENTDATA],
             CONVERT(VARCHAR(MAX), @xmlEventData.query('data(/EVENT_INSTANCE/TSQLCommand/CommandText)'))  AS COMMANDTEXT
     
            GO
            ENABLE TRIGGER [trg_audit] ON ALL SERVER

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    ok donc logiquement je peux peu être récupérer ça sur une sauvegarde de ce weekend ?

    tu pourras me dire ce que fait ton second script enfaite ? il active plus de logs c'est ca ?

Discussions similaires

  1. [AC-2003] Demande d'aide sur l’exécution d'une requête
    Par barousmane dans le forum Access
    Réponses: 1
    Dernier message: 25/08/2014, 16h30
  2. Réponses: 18
    Dernier message: 06/10/2007, 18h03
  3. IIF sur Mémo dans une requête tronqué dans VBA
    Par lemat dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/09/2007, 13h55
  4. [MySQL] implode() sur résultat d'une requête
    Par popogendarme dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/02/2007, 15h28
  5. manipulation sur date dans une requête
    Par willis dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/07/2006, 15h43

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