我正在尝试将一些可重复使用的脚本放在一起,以跨多个环境(prod / ppt / dev)创建我的数据库,更不用说跨企业重复使用了。当遇到变量引用我的仓库时,我遇到了尝试授予特定模式访问权限的障碍。它似乎无法解析该变量,并告诉我该模式不存在。
所以我正在使用类似于以下内容的东西:
set dbname = 'mydb';
set role = 'myrole';
use role SECURITYADMIN;
use database identifier($dbname);
grant select on future tables in schema myschema to role identifier($role);
我也尝试过:
grant select on future tables in schema identifier($dbname).myschema to role identifier($role);
但是总是得到相同的'找不到对象'错误。
我可以将其硬编码为:
grant select on future tables in schema mydb.myschema to role identifier($role);
并且可以很好地工作,但是如果我必须对数据库名称进行硬编码,那将失去具有可重用脚本的意义(奇怪的是,这种模式在硬编码的环境中将是静态的,])
这是一个限制,还是我做错了什么?
非常感谢。
我正在尝试将一些可重复使用的脚本放在一起,以跨多个环境(prod / ppt / dev)创建我的数据库,更不用说跨企业重复使用了。我遇到了尝试授予...的障碍...
以下对我有用。我有一个名为test_db
的数据库,该数据库具有称为public的架构。谁是您的myschema
模式的所有者?