共享数据库和 "An owner referenced by user does not have EXECUTE PROCEDURE access to" 程序
Shared database and "An owner referenced by user does not have EXECUTE PROCEDURE access to" procedure
如果您有权在共享数据库中创建过程,但无法在同一数据库中创建的第二个过程中执行第一个过程,那么在 Teradata 中是否有解决方法。
尝试使用 SQL INVOKER 和 SQL CREATOR。
尝试了一个明确授予执行的选项,结束于:
The user doesn't have CREATE PROCEDURE WITH GRANT OPTION access to database
这里还能做什么?
.login server1/$user1,$pwd1
database shared_db;
replace proc proc1
SQL SECURITY CREATOR
begin
end;
replace proc proc2
begin
call proc1;
end;
-- errors
为弗雷德编辑:
保存程序的数据库是共享的(又名shared_db)。 User1(有权在 shared_db 中创建过程)正在其中创建 proc1,而 proc2;后者从其主体执行 proc1。
编辑 2 - 结论是,确实需要设置(这不是很明显)
GRANT EXECUTE ON shared_db.proc1 to shared_db;
PROC1 的创建者可以
GRANT EXECUTE PROCEDURE ON shared_db.proc1 TO shared_db;
如果您有权在共享数据库中创建过程,但无法在同一数据库中创建的第二个过程中执行第一个过程,那么在 Teradata 中是否有解决方法。 尝试使用 SQL INVOKER 和 SQL CREATOR。
尝试了一个明确授予执行的选项,结束于:
The user doesn't have CREATE PROCEDURE WITH GRANT OPTION access to database
这里还能做什么?
.login server1/$user1,$pwd1
database shared_db;
replace proc proc1
SQL SECURITY CREATOR
begin
end;
replace proc proc2
begin
call proc1;
end;
-- errors
为弗雷德编辑:
保存程序的数据库是共享的(又名shared_db)。 User1(有权在 shared_db 中创建过程)正在其中创建 proc1,而 proc2;后者从其主体执行 proc1。
编辑 2 - 结论是,确实需要设置(这不是很明显)
GRANT EXECUTE ON shared_db.proc1 to shared_db;
PROC1 的创建者可以
GRANT EXECUTE PROCEDURE ON shared_db.proc1 TO shared_db;