2013-07-24 3 views
1

я разобрал ее и ничего не нашел. Расскажите, я создал пользователя и предоставил таблицу в моей SyBase. но когда я попробуюустановить базу данных/схему пользователя по умолчанию в Sybase IQ

select * from table1 

это не сработало. Ошибка шоу и я пытаюсь добавить DBName перед именем таблицы, как это, и она работает:

select * from dbname.table1 

я подозреваю, что база данных пользователя по умолчанию что-то другое, поэтому я хочу, чтобы установить DBName в свою базу данных по умолчанию. Кто-нибудь знает, как это сделать?

+0

«dbname» действительно имя базы данных и ** нет ** имя пользователя, которому принадлежит таблица? –

+0

@GraemePerrow да, вы правы .. dbname - это пользователь, которому принадлежит таблица. я все еще удивляюсь, почему .. как вы знаете ??? –

ответ

2

Это не имеет ничего общего с именами баз данных (или политиками авторизации). Учитывая ваш комментарий, что «dbname» на самом деле является пользователем, которому принадлежит таблица, вот что происходит.

Когда вы указываете имя таблицы без владельца, сервер должен определить, какую таблицу вы имеете в виду. Сначала он ищет таблицу, которой вы владеете с этим именем. Если он не находит его, он ищет таблицы, принадлежащие любым группам, членом которых вы являетесь. Я подозреваю, что в одной из этих групп есть таблица с именем «table1», которой у вас нет разрешения на выбор.

Когда вы укажете имя таблицы с владельцем, сервер точно знает, какую таблицу использовать. Поскольку у вас есть , у есть разрешение на выбор из этой таблицы, вы получаете нужные результаты.

+0

, так что даже если я изменяю хранимую процедуру и не могу заставить ее работать? я предоставил пользователю эту таблицу. любое альтернативное решение? может быть, я создал представление с именем 'table1', поэтому каждый раз, когда новый пользователь выбирает из' table1', он перейдет к 'dbname.table1'. вы думаете, что это сработает? Мне нужно проверить это завтра утром .. –

+1

Создание представления, вероятно, будет вашим лучшим выбором. 'create view table1 as select * from dbname.table1' фактически делает« table1 »псевдоним для« dbname.table1 ». –

+0

@Graeme Пожалуйста, взгляните на мой вопрос - http://stackoverflow.com/questions/19299244/how-to-resolve-update-operation-attempted-on-non-updatable-query – mtk

0

IQ не имеет баз данных/схем по умолчанию. Вместо этого он использует политики входа в систему. Каждая база данных имеет назначенный ей логин, который может быть изменен. Вы также можете создавать собственные политики входа в систему.

Когда вы создаете учетную запись пользователя без указания политики входа в систему, она автоматически получает корневую логиновую политику.

Для получения дополнительной информации, проверьте следующий SAP Sybase IQ документы:

Intro to IQ: Managing Users and Groups

System Admin Guide V1: Managing User IDs and Permissions

0

Использование вида или процедуры является полезным методом. Тем не менее, для создания схемы «по умолчанию» в (IQ 15.x) можно было бы использовать группы. По существу, одна группа предоставляет группе владельца схемы и делает отдельные учетные записи (или другие группы) членами этой группы. Обратите внимание, что это только дает пользователю доступ к схеме, то есть исключает необходимость предисловия объекта с именем схемы/владельца (если только конфликты имен объектов не разрешаются только с явным наименованием schema.object). Это не включает предоставление разрешений. Ни одна из неявных привилегий, связанных с владельцем таблиц, не наследует. Однако, поскольку теперь схема/владелец также является группой, разрешения могут быть предоставлены на этом уровне.

См.: http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc00170.1540/doc/html/san1288042708174.html (Управление идентификаторами пользователей и разрешениями). Будьте осторожны: этот материал обычно требует некоторого тщательного чтения и экспериментов, прежде чем он станет полезным.

Как я понимаю, этот метод дополняет (функционально заменяемый) новой ролевой моделью в IQ 16. Однако, поскольку я все еще чувствую себя через IQ 16, возможно, гораздо больше сказал, и я пока не готов комментировать.

 Смежные вопросы

  • Нет связанных вопросов^_^