как сменить владельца табличек ?

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
n506
Сообщения: 4
Зарегистрирован: 12 сен 2005, 19:17

как сменить владельца табличек ?

Сообщение n506 » 10 окт 2005, 23:41

вот как dbowner - знаю . а владельца табличек и процедур - нет .

задача
волею судеб , нужно из ХП менять description у таблички . и не под sysdba . а никак , пока под этим пользователем табличку сам не создашь .

это часть задачи . в принципе , достаточная . а вот вторая часть - пользователь может быть не один . подозреваю , что на ходу дёргать owner не получится .

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 11 окт 2005, 10:27

Права процедуре давать пробовал ?

n506
Сообщения: 4
Зарегистрирован: 12 сен 2005, 19:17

Сообщение n506 » 11 окт 2005, 18:29

hvlad писал(а):Права процедуре давать пробовал ?
создаём процедуру под sysdba и описание ей правим .

Код: Выделить всё

SET TERM ^ ;

CREATE PROCEDURE TST 
AS
begin
    update rdb$procedures set rdb$description=null where rdb$procedure_name='TST';
  suspend;
end
^

SET TERM ; ^
commit work;

grant all on table rdb$procedures to procedure tst;
grant all on table rdb$procedures to user tstuser;
grant execute on PROCEDURE tst to user tstuser;

update rdb$procedures set rdb$description='tst' where rdb$procedure_name='TST';
commit work;

запускаем под tstuser

Код: Выделить всё

execute procedure TST

This user does not have privilege to perform this operation on this object.
no permission for protect access to PROCEDURE TST.
абсолютно та же картина с describe.

в ibexpert все необходимые права зелёненькие . tstuser - свежесозданный юзер . у меня руки кривые ?

более того , если tstuser в эксперте дать все права на всё (включая галочку про системные таблицы) - эффект тот же .

два варианта , когда процедура работает
1. под sysdba
2. под пользователем , из-под которого процедура создавалась .

2й вариент не является решением проблемы , т.к. описание и у таблиц нужно менять . а вот их пересоздать не получится . база старая .

ps firebird 1.5.2

n506
Сообщения: 4
Зарегистрирован: 12 сен 2005, 19:17

Сообщение n506 » 17 окт 2005, 20:12

что , нет методов ?

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 17 окт 2005, 23:00

n506 писал(а):что , нет методов ?
Может и нет, некогда этим заняться.
А зачем простым юзерам менять description таблицам ?

n506
Сообщения: 4
Зарегистрирован: 12 сен 2005, 19:17

Сообщение n506 » 26 окт 2005, 18:42

hvlad писал(а):
n506 писал(а):что , нет методов ?
Может и нет, некогда этим заняться.
А зачем простым юзерам менять description таблицам ?
не совсем простым - сам клиент под своим логином ходит к базе (неравным sysdba) .

в общем , вот так придумалось

Код: Выделить всё

update rdb$relations  
set rdb$owner_name='NEW_USER' 
WHERE 
not (rdb$relation_name starting 'RDB$')
вопрос - чем мне это грозит в перспективе ? я ж знаю - копаться руками в rdb$ - нехорошо .

Ответить