Как Программно Назначить Роль Пользователя

Тема в разделе "Delphi - Базы данных", создана пользователем ksmak, 9 авг 2013.

  1. ksmak

    ksmak New Member

    Регистрация:
    9 авг 2013
    Сообщения:
    3
    Симпатии:
    0
    база данных firebird 2.5
    использую компоненты fib 6.8

    когда вручную пишу sql оператор

    GRANT ROLE1 TO USER1;

    то роль нормально назначается без проблем

    а когда программно хочу назначить роль через процедуру в программе

    procedure TfrmUsers.SetUserRole(login, role: String);
    begin
    frmMain.scr.Transaction.StartTransaction;
    frmMain.scr.Script.Clear;
    frmMain.scr.Script.Add('GRANT '+role+' TO '+login);
    frmMain.scr.ExecuteScript;
    end;

    то ошибок не выдает, но роль не назначается

    в чем может быть причина и как всетаки правильно назначать роли пользователям
     
  2. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    FIBPlus никогда не использовал. Предпочитаю (и всем подряд советую) ZeosLib. Она бесплатная и очень хорошо работает со всеми популярными базами данных.
    Поэтому, сами понимаете, конкретно про сам fib сказать не могу. но...
    Для того чтобы работало:
    1) Нужно быть залогиненым к базе суперадмином или (как минимум) пользователем с правами управления ролями.
    2) транзакция должна быть завершена. (должно быть что-то типа... FLUSH PRIVILEGES или Transaction.StopTransaction а может быть даже просто специальный символ обозначающий конец SQL команды. например ";" или перевод каретки).
    В приведенном Вами куске кода, я ничего такого не увидел.
     
  3. ksmak

    ksmak New Member

    Регистрация:
    9 авг 2013
    Сообщения:
    3
    Симпатии:
    0

    точно!
    надо было завершить транзакцию

    frmMain.scr.Transaction.Commit;

    теперь работает

    большое спасибо
    а на счет библиотеки ZeosLib не подскажете где можно найти
     
  4. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Почитайте вот тут мои посты http://codeby.net/forum/threads/49988.html
    Там про MySQL, но про "где взять" и порядок установки тот же самый. Разница только в том, что для FireBird нужно вместо MySQL-клиентских библиотек, скачать FireBird-овские.
    Они там-же в репозитории, в соседней папке. Для последней стабильной (7.0.4) версии - тут: svn://svn.code.sf.net/p/zeoslib/code-0/tags/7.0.4-stable/lib/firebird
     
Загрузка...

Поделиться этой страницей