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

ksmak

New Member
09.08.2013
3
0
#1
база данных 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;

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

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

sinkopa

Well-Known Member
17.06.2009
344
9
#2
база данных firebird 2.5
использую компоненты fib 6.8
а когда программно хочу назначить роль через процедуру в программе
то ошибок не выдает, но роль не назначается
в чем может быть причина и как всетаки правильно назначать роли пользователям
FIBPlus никогда не использовал. Предпочитаю (и всем подряд советую) ZeosLib. Она бесплатная и очень хорошо работает со всеми популярными базами данных.
Поэтому, сами понимаете, конкретно про сам fib сказать не могу. но...
Для того чтобы работало:
1) Нужно быть залогиненым к базе суперадмином или (как минимум) пользователем с правами управления ролями.
2) транзакция должна быть завершена. (должно быть что-то типа... FLUSH PRIVILEGES или Transaction.StopTransaction а может быть даже просто специальный символ обозначающий конец SQL команды. например ";" или перевод каретки).
В приведенном Вами куске кода, я ничего такого не увидел.
 

ksmak

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

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

frmMain.scr.Transaction.Commit;

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

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

sinkopa

Well-Known Member
17.06.2009
344
9
#4
точно!
теперь работает
а на счет библиотеки ZeosLib не подскажете где можно найти
Почитайте вот тут мои посты http://codeby.net/forum/threads/49988.html
Там про MySQL, но про "где взять" и порядок установки тот же самый. Разница только в том, что для FireBird нужно вместо MySQL-клиентских библиотек, скачать FireBird-овские.
Они там-же в репозитории, в соседней папке. Для последней стабильной (7.0.4) версии - тут:
Чтобы видеть этот контент необходимо: Войти или зарегистрироваться