Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создатель базы


juice ©   (2005-05-16 17:21:00) 

Как узнать имя поьзователя который создал базу данных Firebird ?


-SeM-   (2005-05-17 15:34:00) [1]

Есть дыра :(
Таблица RDB$USER_PRIVILEGES не дает себя редактировать, но можно добавлять, удалять записи и после таких манипуляций мой совет может дать не верный ответ. Увы...


Johnmen   (2005-05-17 14:29:00) [2]

Да. Интересное "явление"...
Хотя, опять же, слегка подумав, можно примерно понять, почему.


-SeM-   (2005-05-17 13:44:00) [3]

Johnmen ©   (17.05.05 13:39) [12]

> я бы см. RDB$DATABASE

Ан нет ее там. Из системных только RDB$ROLES, остальные созданные пользователями.


Zacho   (2005-05-17 13:41:00) [4]

Johnmen ©   (17.05.05 13:39) [12]

А при чём здесь RDB$DATABASE ?


Johnmen   (2005-05-17 13:39:00) [5]

>-SeM-   (17.05.05 13:33) [11]

Вобщем-то так и д.б. Мой вопрос был несколько глуп, если подумать.
Для не до конца понятной самому себе логике, я бы см. RDB$DATABASE


-SeM-   (2005-05-17 13:33:00) [6]

Johnmen ©   (17.05.05 13:22) [10]
Только что проверил.
Restore под создателем, backup - SYSDBA. Запрос возвращает SYSDBA, что и требовалось доказать :)

ЗЫ Маленькое уточнение - запросом можно узнать создателя не только таблиц, но и просмотров, и ХП.


Johnmen   (2005-05-17 13:22:00) [7]

Да, интересное решение. Респект.
Один момент только (проверять не буду) - после b/r со сменой владельца, что покажет ?


-SeM-   (2005-05-17 13:19:00) [8]

Zacho ©   (17.05.05 12:55) [8]
Этим запросом мы можем получить создателя любой таблицы. В данном случае рассматриваем таблицу RDB$ROLES, которая появляется только при создании базы. Т.е. тот кто создал таблицу - тот и есть создатель базы.
"Ручной" апдейт исключается - попробуй (даже под создателем) изменить поле RDB$GRANTOR - 'action cancelled by trigger (0) to preserve data integrity.
cannot modify an existing user privilege'. Есть другой вариант?


Zacho   (2005-05-17 12:55:00) [9]

-SeM-   (17.05.05 9:50) [7]

Интересное решение, мне даже в голову не пришло. Возьму на заметку.

Любопытно, а могут ли быть случаи, в которых оно окажется не верным ? Естественно, исключая "ручной" апдейт системных таблиц.


-SeM-   (2005-05-17 09:50:00) [10]

2juice

SELECT DISTINCT RDB$USER FROM RDB$USER_PRIVILEGES
WHERE RDB$USER=RDB$GRANTOR AND RDB$RELATION_NAME='RDB$ROLES'


Zacho   (2005-05-16 19:55:00) [11]

DSKalugin ©   (16.05.05 19:49) [4]

Блин, в этом скрипте ты увидишь имя, с которым ты залогинился к базе, а вовсе не имя её создателя.


Zacho   (2005-05-16 19:54:00) [12]

juice ©   (16.05.05 17:21)

Насколько я знаю, никак. Да и зачем ?
Впрочем, могу и ошибаться.

DSKalugin ©   (16.05.05 18:12) [2]

Это прикол такой что-ли ? Несмешно.


DSKalugin   (2005-05-16 19:49:00) [13]

Версию я сегодня обновил до последней, но не в этом дело
Смотри пункт меню "Инструменты" - "Извлечение метаданных"
все не извлекай, а только скрипт создания БД достаточно в буффер обмена извлеч


juice   (2005-05-16 18:53:00) [14]

Сорри, не нахожу такого. ожет у вас версия выше ?


DSKalugin   (2005-05-16 18:12:00) [15]

загляни в скрипт создания, который можно просмотреть ИБЭкспертом и увидишь чтото типа


SET SQL DIALECT 3;

SET NAMES WIN1251;

CREATE DATABASE 'P4:C:\ShopDB\isautostar.fdb'
USER 'DSKALUGIN' PASSWORD '*********'
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1251;



откуда ясно что создатель - я


juice   (2005-05-16 17:22:00) [16]

Может в IB Expert'e это есть ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо