общая база данных и процедура «Владелец, на которого ссылается пользователь, не имеет доступа к EXECUTE PROCEDURE». - PullRequest
0 голосов
/ 23 апреля 2020

Есть ли способ обойти это в Teradata, если у вас есть права на создание процедуры в общей базе данных, но вы не можете выполнить первую процедуру внутри второй процедуры, созданной в той же базе данных. Попытка с помощью SQL INVOKER и SQL CREATOR.

Попробовал вариант явного предоставления выполнения, завершившийся: «У пользователя нет доступа к базе данных CREATE PROCEDURE WITH GRANT OPTION»

Что еще можно сделать здесь?

.login server1/$user1,$pwd1
database shared_db;
replace proc proc1
SQL SECURITY CREATOR
begin
end;

replace proc proc2
begin
  call proc1;
end;

-- errors

РЕДАКТИРОВАТЬ для Фреда:

База данных, содержащая процедуры, является общей (aka shared_db). Пользователь1 (у которого есть права на создание процедур в shared_db) создает в нем proc1 и proc2; последний выполняет proc1 из своего тела.

РЕДАКТИРОВАТЬ 2 - завершено, необходимая настройка действительно была (что не так очевидно)

GRANT EXECUTE ON shared_db.proc1 для shared_db;

Спасибо!

1 Ответ

1 голос
/ 23 апреля 2020

Создатель PROC1 может

 GRANT EXECUTE PROCEDURE ON shared_db.proc1 TO shared_db;
...