2013-10-09 2 views
0

У меня есть доступ к некоторой схеме в другой базе данных и как часть некоторых работ по миграции, я сравниваю 2 схемы. Я использую Syscat, чтобы сравнить 2 схемы. Однако в одном из схемы, я получаю сообщение об ошибке говорящееНевозможно запросить некоторые объекты в схеме.

"user does not have select privilege on "

Я хотел бы знать, как я могу видеть, что и все права доступа были установлены в конкретной схеме (в основном всех пользователей, имеющих доступ и тип доступа для схемы gievn). База данных - db2. Пожалуйста, обратите внимание, что я не использую любой инструмент, как схемы гусеничные и т.д. Вместо этого я пишу приложение JDBC, который использует Syscat для запроса детали как select * from syscat.tables where tabSchema = <schemaName>

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

ответ

0

В привилегиях DB2, предоставленных в схеме, не предоставляется никаких прав на объекты, принадлежащие этой схеме (если вы сами не создали эти объекты). Вам должны быть предоставлены явные привилегии объектов или определенные привилегии уровня базы данных, такие как DATAACCESS.

Фактическое сообщение об ошибке DB2 должно содержать имя объекта, который генерирует ошибку. Попробуйте напечатать строковое представление объекта SQLException.

+0

Здравствуйте, Извините за путаницу, ошибка, о которой я говорил, входит в SQL Editor (я использую AquaData Studio). Поэтому я хочу знать, как узнать для данной схемы, какие и все разрешения на месте. – user1588737

+0

Для схемы или для объектов в этой схеме? Для привилегий схемы запросите 'SYSCAT.SCHEMAAUTH'; для каждого запроса типа объекта соответствующее представление, например. 'SYSCAT.TABAUTH' для табличных привилегий. – mustaccio

0

Схема - это логическая группа объектов. Эти объекты могут быть представлениями, таблицами, индексами, последовательностями, функциями, sotred процедурами и т. Д. Каждый из этих объектов имеет другой набор привилегий: таблица имеет выбор, вставку, удаление и другие; хранимая процедура имеет исполнение и другие; и т. д. Это означает, что каждый отдельный объект имеет разные типы привилегий, и вы не можете получить «все привилегии для данной схемы», вы должны указать тип объекта.

Например, для того, чтобы получить привилегии на столах для данной схемы можно выполнить

db2 " 
select substr(GRANTEE,1,16),GRANTEETYPE,substr(tabschema || '.' || tabname,1,64), 
CONTROLAUTH, ALTERAUTH, DELETEAUTH, INDEXAUTH, INSERTAUTH, REFAUTH, SELECTAUTH, UPDATEAUTH 
from syscat.TABAUTH 
where tabschema like 'MYSCHEMA%'" 

Каждого вида объекта, таблица в SysCat схеме, которая содержит привилегии для такого рода объекта. Вам просто нужно запросить таблицу.

Подобным же образом, вы можете создать appropiated предложения в целях предоставления или отзыва привилегий на объекте

select 'grant select on ' || trim(tabschema) || '.' || trim(tabname) ' to user johndoe' 
from syscat.tables 
where tabschema like 'MYSCHE%' 

Наконец, есть не только привилегии (гранты) на db2, есть также уровень базы данных а некоторые из них обладают привилегиями по всем объектам.

+0

это то, что я имел в виду На входе в схеме (скажем SCHEMA) .. Я исполняю следующий запрос выберите кол (1) от syscat.tabauth и получить ошибку ниже. Хотелось бы узнать .. who и все пользователи имеют доступ к запросу tabauth . > [Ошибка] Строки сценария: 1-2 -------------------------- Ошибка DB2 SQL: SQLCODE = -551, SQLSTATE = 42501, SQLERRMC = xxxxx; SELECT; SYSCAT.TABAUTH, DRIVER = 3.50.152 Сообщение: «xxxxx» не имеет требуемого разрешения или привилегии для выполнения операции «SELECT» на объекте «SYSCAT.TABAUTH» .. SQLCODE = -551 , SQLSTATE = 42501, DRIVER = 3.50.152 – user1588737

+0

Это нормально. Пользователь, которого вы используете для выполнения, не имеет привилегий в этих таблицах каталога (tabauth ou schemaauth). Кажется, что вы используете ограниченную базу данных, это значит, что у нее нет привилегий для публики. Вы ничего не можете сделать, чтобы получить привилегии с вашим текущим пользователем. – AngocA

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