Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何为Vertica中频繁删除和创建的表授予特定用户角色的访问权限?_Sql_Vertica - Fatal编程技术网

Sql 如何为Vertica中频繁删除和创建的表授予特定用户角色的访问权限?

Sql 如何为Vertica中频繁删除和创建的表授予特定用户角色的访问权限?,sql,vertica,Sql,Vertica,我有一个表,它经常被删除,并在模式中使用相同的名称创建。在Vertica中创建表时,如何创建对用户角色的授权访问 附言:这个问题是针对vertica的,但欢迎大家提出所有想法。业务需求也在下降,我们甚至无法截断表并清除数据。不幸的是,Vertica不支持一个固定角色,该角色可以对数据库中的任何表或视图运行SELECT语句(例如SQL Server db_datareader角色)。 因此,根据您创建对象的方式(DBA创建、工作流或任何ETL工具),您需要将其自动化。 您可以创建一个UDP来完成这

我有一个表,它经常被删除,并在模式中使用相同的名称创建。在Vertica中创建表时,如何创建对用户角色的授权访问


附言:这个问题是针对vertica的,但欢迎大家提出所有想法。业务需求也在下降,我们甚至无法截断表并清除数据。

不幸的是,Vertica不支持一个固定角色,该角色可以对数据库中的任何表或视图运行SELECT语句(例如SQL Server db_datareader角色)。 因此,根据您创建对象的方式(DBA创建、工作流或任何ETL工具),您需要将其自动化。 您可以创建一个UDP来完成这项工作,只需在作业、脚本和工作流中调用UDP即可。 您还可以创建UDP来提取对对象的实际授权、访问权,并将其存储在临时文件中,以便在对象重新创建后执行

但问题是?是否需要重新创建表?这有什么用?也许有更好的解决办法!
还有@Kermit你必须停止投票

重新创建表时,必须分步执行

1) 基于现有授权生成授权脚本。(您需要更改此项以匹配您处理补助金的方式)

2) 创建与旧表类似的新表(确保保存投影!)

3) 放下旧桌子

DROP TABLE MYSCHEMA.MYTABLE;
4) 重命名新表

ALTER TABLE MYSCHEMA.NEW_MYTABLE RENAME TO MYTABLE;
5) 申请产生的补助金

GRANT ROLE_MYROLE TO MYSCHEMA.MYTABLE;

为什么不自动化呢?告诉业务人员不要将他们的需求放在技术领域之外。:-)我很难想象为什么不允许
TRUNCATE TABLE
ALTER TABLE MYSCHEMA.NEW_MYTABLE RENAME TO MYTABLE;
GRANT ROLE_MYROLE TO MYSCHEMA.MYTABLE;