RSS Feed

Styczeń, 2014

  1. Firebird, restore bazy i błąd „gbak: ERROR: could not find table/procedure for GRANT”

    Styczeń 22, 2014 by 0verlord

    Jeżeli przy odtwarzaniu bazy Firebirda dostajemy taki błąd jak w temacie, oznacza to, że nastąpiła korupcja 😉 . A dokładniej skorumpowała nam się baza security2.fdb.
    Jeżeli nie robiliście backupu, to trzeba sobie taką wypakować z instalatora i następnie dodać odpowiednich userów przy pomocy polecenia gsec.

    Log z próby
    gbak: restoring privilege for user SYSDBA
    gbak: ERROR:action cancelled by trigger (0) to preserve data integrity
    gbak: ERROR: could not find table/procedure for GRANT
    gbak: Exiting before completion due to errors


  2. Reset hasła Szefa w programie Subiekt GT

    Styczeń 8, 2014 by 0verlord

    Kasowanie hasła szefa w subiekcie jest zadaniem trywialnym, jeżeli mamy hasło do usera sa do bazy MSSQlowej lub możemy się zalogować jako user z uprawnieniami admina (tzw. logowanie zintegrowane, gdzie user, najczęściej Administrator, może się także zalogować do bazy MSSQL jako superuser).

    Operacje wykonujemy przy pomocy MS SQL Management Studio (lub jego odpowiednika, np. Toad SQL). Opis można znaleźć na przykład tu.

    Logujemy się do nazwanej instancji, wybieramy bazę i wykonujemy UPDATE, który skasuje hasło z Szefa.

    UPDATE pd_uzytkownik SET uz_haslo = '' WHERE uz_identyfikator = 'SF';

    Teraz logujemy się i ustawiamy hasło na jakieś bardziej znane.

    Aaaale, może się okazać, że w wyniku zapytania dostaniemy 0 trafień. Dlaczego? Konta Szef może nie być, stąd nie ma identyfikatora SF. No to kto jest Szefem?
    Łatwo to sprawdzić – będzie to user, założony jako pierwszy, czyli posiadający uz_Id = '1'.

    Czyli ogólnie, reset hasła Szefa nawet przy braku konta nazywającego się „Szef” powinien raczej bardziej tak:

    UPDATE pd_uzytkownik SET uz_haslo = '' WHERE uz_Id = '1';

    Ale przy takim resecie, dalej nie wiemy, które konto ma uprawnienia Szefa. Jeżeli jest ich mało – można sprawdzać po kolei. Ale lepiej zadać jeszcze jedno zapytanie:

    select * from pd_uzytkownik where uz_Id = '1';

    Od razu pokaże kto tu jest Szefem ;-).