Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / НЕуказание владельца таблицы при обращении к ней. / 7 сообщений из 7, страница 1 из 1
17.07.2003, 00:55
    #32210370
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
НЕуказание владельца таблицы при обращении к ней.
Sqlanywhere 5.5 - 8.0

Подключились как DBA и создаем таблицу:
Код: plaintext
Create Table TTT (id int)


И назначим на нее права:
Код: plaintext
Grant Select on TTT to public



Если теперь простой юзер (Не DBA) выполнит запро
Select * from TTT
то он получит сообщение об ошибке, что такой таблицы нет. Писать нужно:
Select * from DBA.TTT

Но очень не хочется указывать имя владельца объекта. Дело в том, что есть довольно большой проект, который писался по MSSQL. (Там владельца указывать не обязательно.) Теперь этот код (и клиента и сервер) придется портировать на ASA 8.0

Что нужно сделать, чтобы при обращении к объекту (таблице, процедуре) SomeObject, сервер искал его как DBA.SomeObject, а не ThisUser.SomeObject?
Очень не хочется прописывать везде "DBA."
...
Рейтинг: 0 / 0
17.07.2003, 08:48
    #32210454
chagoserg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
НЕуказание владельца таблицы при обращении к ней.
Создавайте таблицы и процедуры (вообще объекты) от DBO, либо раздавайте права или же придётся писать везде DBA
...
Рейтинг: 0 / 0
17.07.2003, 11:46
    #32210688
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
НЕуказание владельца таблицы при обращении к ней.
Необходимо юзера DBA преобразовать в группу DBA. Далее создать пользовательскую группу и в ее membership включить группу DBA. Получится, что любой пользователь этой группы или залогиненный под именем этой группы имеет право обращаться к обьектам, созданным DBA без указания в запросах имени владельца обьектов, однако права на доступ и изменение информации от DBA не наследуются и должны указываться конкретно для пользовательской группы или ее пользователей. Думаю это Вам как раз и нужно. Все действия можно выполнить в Central или же через команды WatcomSQL. Также есть примеры в Online Book.
...
Рейтинг: 0 / 0
17.07.2003, 11:54
    #32210703
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
НЕуказание владельца таблицы при обращении к ней.
Александр Спелицин
Если не секрет, почему было решено переводить проект с MSSQL на ASA ? У нас схожая ситуация, в кач-ве основания для портирования участвовали причины нетребовательности к ресурсам, его низкой стоимости, плюс возможности войти в партнерскую программу Sybase, более продвинутых функциональных возможностей и кроссплатформенности.
...
Рейтинг: 0 / 0
17.07.2003, 19:15
    #32211488
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
НЕуказание владельца таблицы при обращении к ней.
На самом деле разрабатывается другой проект. И есть огромное желание перенести уже отработанные компаненты Delphi для M$ к варианту Delphi+ASA.
Просто уже в недрах самих этих компонент формируется что-то типа
Exec SomeProcedure param1, param2, ...paramN.

А Sybase хочет вот так:
Exec DBA .SomeProcedure param1, param2, ...paramN.
...
Рейтинг: 0 / 0
24.07.2003, 12:22
    #32216725
Alexandr Nikolaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
НЕуказание владельца таблицы при обращении к ней.
Посмотри в ASA SETUSER, мож чем поможет!?
...
Рейтинг: 0 / 0
31.07.2003, 13:52
    #32223765
Aleksey Gorbunov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
НЕуказание владельца таблицы при обращении к ней.
А я это решаю так:
В 5.5.0:

create procedure Public.GenerateID(out @Result char(22)) external name 'GenerateID@guid.dll'
go
CREATE FUNCTION Public.GenerateIDFunc()
RETURNS varchar(22)
BEGIN
DECLARE ID varchar(22);
call GenerateID(ID);
RETURN (ID);
END
go

в 5.5.05 и выше -
GRANT CONNECT TO "ALLUSERS"
go
GRANT GROUP TO "ALLUSERS"
go

В эту группу добавляю ВСЕХ людей, работающих с БД

далее....
create function ALLUSERS.FirstDayOfMonth(in @Date date)
returns date
begin
return (ymd(Year(@Date), Month(@Date), 1));
end
go

Теперь можно писать
select FirstDayOfMonth(....) from DUAL
из-под любого аккаунта
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / НЕуказание владельца таблицы при обращении к ней. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]