Stored procedures 雪花程序中角色的动态切换

Stored procedures 雪花程序中角色的动态切换,stored-procedures,snowflake-cloud-data-platform,snowflake-schema,Stored Procedures,Snowflake Cloud Data Platform,Snowflake Schema,我在snowflake过程中有一个用例,其中我有两个具有不同角色的数据库。我想从一个存储过程在这两个数据库的表中插入数据。我在其中一个数据库中创建了过程,该过程正在该数据库中插入数据,但当我尝试在第二个数据库中插入数据时,它显示: SQL compilation error: Database 'SecondDB' does not exist or not authorized. 然后,在插入过程中的第二个数据库之前,我尝试使用query来更改角色,如下所示: var SwitchToLoa

我在snowflake过程中有一个用例,其中我有两个具有不同角色的数据库。我想从一个存储过程在这两个数据库的表中插入数据。我在其中一个数据库中创建了过程,该过程正在该数据库中插入数据,但当我尝试在第二个数据库中插入数据时,它显示:

SQL compilation error: Database 'SecondDB' does not exist or not authorized.
然后,在插入过程中的第二个数据库之前,我尝试使用query来更改角色,如下所示:

var SwitchToLoader = "use role SecondDbRole";
try {
snowflake.execute 
(
     {sqlText: SwitchToLoader}
);
}
catch (err)  {
     return "Failed: " + err;  
}
这仍然是给我的错误:

SQL access control error: Insufficient privileges to operate on role 'SecondDbRole'

那个么,对于如何在我的第二个数据库中插入与单个存储过程具有不同角色的数据,有什么建议吗

出于安全目的,不能在存储过程中使用其他角色。但是,如果作为所有者,您希望调用方享有相同的权限,您可以始终使用所有者的权限创建该权限,并且不必在过程中进行任何角色的显式切换

为此,您只需要包含“作为所有者执行”子句

有关来电者和所有者权利的更多信息,请参阅我们的文档

我在过程中添加了“作为所有者执行”条款,但在我的情况下,这不起作用。无论如何,我为两个数据库设置了相同的角色来解决这个问题。