我有一個表格經常被丟棄並且在模式中使用相同的名字創建。在Vertica中創建表時,如何創建對用戶角色的授予訪問權限?我如何授予訪問Vertica中經常丟失和創建的表的特定用戶角色的權限?
P.S:這個問題是vertic的,但所有的想法都是值得歡迎的。同時也是業務需求下降,我們甚至無法截斷表格並清除數據。
我有一個表格經常被丟棄並且在模式中使用相同的名字創建。在Vertica中創建表時,如何創建對用戶角色的授予訪問權限?我如何授予訪問Vertica中經常丟失和創建的表的特定用戶角色的權限?
P.S:這個問題是vertic的,但所有的想法都是值得歡迎的。同時也是業務需求下降,我們甚至無法截斷表格並清除數據。
不幸的是,Vertica不支持可以針對數據庫中的任何表或視圖運行SELECT語句的固定角色(例如SQL Server db_datareader角色)。 因此,根據您創建對象的方式(DBA創建,工作流或任何ETL工具),您需要自動執行此操作。 你可以創建一個UDP來爲你做這件事,並在你的工作,腳本,工作流中調用UDP。 你也可以創建一個UDP來提取實際的授權,訪問該對象,並將其存儲在臨時文件中,以便在對象重新創建後執行。
但問題是?重新創建所需的表格?這有什麼用處?也許有更好的解決方案! 而且@你要停止投票!
重新創建表格時,必須按步驟執行。
1)根據現有的授權生成GRANT腳本。 (你需要改變這種以匹配你如何處理贈款)
select 'GRANT ' || privileges_description || ' ON ' || object_schema || '.' || object_name || ' TO ' || grantee || ';' from grants
where object_schema = 'MYSCHEMA' object_name = 'MYTABLE'
and grantee ilike 'role%';
2)創建新表像舊的(一定要保存您的投影!)
CREATE TABLE MYSCHEMA.NEW_MYTABLE LIKE MYSCHEMA.MYTABLE INCLUDING PROJECTIONS;
3)刪除舊錶
DROP TABLE MYSCHEMA.MYTABLE;
4)重命名新表
ALTER TABLE MYSCHEMA.NEW_MYTABLE RENAME TO MYTABLE;
5)申請生成的贈款
GRANT ROLE_MYROLE TO MYSCHEMA.MYTABLE;
爲什麼不自動化呢? – Kermit
告訴業務夥伴保持技術領域的需求。 :-)我很難想象爲什麼'TRUNCATE TABLE'不會被允許。 – woot