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

SQL Firebird Discussion :

TRIGGER (ON CONNECT AS) pour protéger LA BD


Sujet :

SQL Firebird

  1. #1
    Membre du Club
    TRIGGER (ON CONNECT AS) pour protéger LA BD
    salut j'ai utilise firebird 2.5.9

    je voulais d'éviter que sur une autre machine avec un autre Firebird/Interbase, n'importe qui arrive à ouvrir ma base de données avec le compte SYSDBA

    j'ai essayé de créer TRIGGER, mais cela n'a pas fonctionné
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE EXCEPTION EXCEPTION01 'Vous n''avez pas le droit d''accéder à cette base de données';
     
    CREATE TRIGGER  EXCEPTION01 ON CONNECT AS
    BEGIN
    IF (CURRENT_USER= 'SYSDBA') THEN EXCEPTION EXCEPTION02;
    END




    Je vois deux messages de erreur :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Engine Error (code = 335544569):
    Dynamic SQL Error.
    SQL error code = -104.
    Unexpected end of command - line 3, column 44.
     
    SQL Error (code = -104):
    Invalid token.


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Engine Error (code = 335544569):
    Dynamic SQL Error.
    SQL error code = -104.
    Token unknown - line 1, column 1.
    END.
     
    SQL Error (code = -104):
    Invalid token.


    Quelle est la solution de ce problème?
    Delphi installés : RAD Studio 10.4 ..........Programme VCL
    SGBD : Firebird 2.5
    générateurs Etats : FastReport, QuickReport
    OS : Window 7 64bit

  2. #2
    Rédacteur/Modérateur

    Bonsoir,

    juste en regardant j'y vois un défaut si execption01 est l'exeception à levée alors le trigger ne soit pas se nommer EXCEPITION01 mais

    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE EXCEPTION EXCEPTION01 'Vous n''avez pas le droit d''accéder à cette base de données';
     
    CREATE TRIGGER  EXCEPTION02 ON CONNECT AS
    BEGIN
    IF (CURRENT_USER= 'SYSDBA') THEN EXCEPTION EXCEPTION01;
    END

    des noms plus explicites auraient empêché ce genre d'inversion
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre du Club
    le méme problème

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Engine Error (code = 335544569):
    Dynamic SQL Error.
    SQL error code = -104.
    Unexpected end of command - line 3, column 44.
     
    SQL Error (code = -104):
    Invalid token.


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Engine Error (code = 335544569):
    Dynamic SQL Error.
    SQL error code = -104.
    Token unknown - line 1, column 1.
    END.
     
    SQL Error (code = -104):
    Invalid token.
    Delphi installés : RAD Studio 10.4 ..........Programme VCL
    SGBD : Firebird 2.5
    générateurs Etats : FastReport, QuickReport
    OS : Window 7 64bit

  4. #4
    Membre éclairé
    Bonsoir.

    Il vous manque la définition du terminateur de fin d'instruction. le fameux SET TERM.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SET TERM ^ ;
    CREATE TRIGGER  EXCEPTION02 ON CONNECT
    AS
    BEGIN
      IF (CURRENT_USER= 'SYSDBA') THEN
          EXCEPTION EXCEPTION01;
    END^
    SET TERM ; ^

  5. #5
    Rédacteur/Modérateur

    Citation Envoyé par ddaime Voir le message

    Il vous manque la définition du terminateur de fin d'instruction. le fameux SET TERM.
    Exact mais comme cela dépend de la manière (ISQL, GUI ....) dont sont passé ces commandes, je n'ai pas soulevé ce lièvre
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  6. #6
    Membre du Club
    L'opération a réussi meeerci
    Delphi installés : RAD Studio 10.4 ..........Programme VCL
    SGBD : Firebird 2.5
    générateurs Etats : FastReport, QuickReport
    OS : Window 7 64bit

###raw>template_hook.ano_emploi###