|
Sybase
|
|
|
|
|
Продукты
|
|
|
|
|
Сообщества
|
|
|
|
|
Меню
|
|
|
|
|
Вход
|
|
|
|
|
Рассылка
|
|
|
|
|
Статистика
|
|
|
|
|
Как простому пользователю обратиться к таблице не указывая ее владельца?
|
Как простому пользователю обратиться к таблице не указывая ее владельца?В запросах простых пользователей (не DBA) при обращении к любым объектам БД, созданных DBA приходится явно указывать имя владельца. В противном случае сервер выдает ошибку, что такой таблицы, процедуры, ... не существует.
Т.е. код:
Select *
From SomeTable
вернет ошибку об отсутствии таблицы SomeTable, в то время как
Select *
From DBA.SomeTable
прекрасно отработает.
Чтобы заставить работать первый вариант нужно:
1. Преобразовать юзера DBA в группу DBA.
2. Простого юзера включить в группу DBA. Или в любую другую группу, которая входит в DBA.
Все это можно выполнить в Central или же через ISQL.
Пояснения:
Пусть у нас есть только что созданная база (пойдет и asademo.db).
Запустим Isql и создадим там таблицу от имени DBA:
Create Table ttt(id int)
go
insert ttt values (1)
go
insert ttt values (2)
go
insert ttt values (3)
go
Создадим учетную запись "user" с паролем "123":
GRANT CONNECT TO "user" IDENTIFIED BY "123"
go
Дадим права этой учетной записи на чтение таблицы:
GRANT SELECT ON "DBA"."ttt" TO "user" FROM "DBA"
go
А теперь, внимание! Делаем из юзера DBA группу DBA и включаем в эту группу учетную запись "user":
grant group to DBA
go
GRANT MEMBERSHIP IN GROUP "DBA" TO "user"
go
Все! Теперь можно обращаться к любым объектам, созданным DBA. Вы больше никогда не получите сообщение о том, что такого объекта нет.
SETUSER "user"
go
Ура, мы теперь уже не DBA, а простой user!!!
Для проверки выполним простенький запрос:
Select * From ttt
go
Ура, получилось!!!
А теперь еще один запросец, проверка на вшивость:
Delete From ttt
go
Все верно, этот запрос не выполнится, т.к. прав на удаления у нас нет :).
|
Дата публикации: Monday 27 March 2006 19:04:49 Материал прочитан: 10984 раз(а) [ Назад ] |
|
|
|
|
|
|
Copyright©2005 . Все права защищены.
|