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