![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создатель базы
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 это есть ?