2015-10-06 92 views
0

我有一個表格經常被丟棄並且在模式中使用相同的名字創建。在Vertica中創建表時,如何創建對用戶角色的授予訪問權限?我如何授予訪問Vertica中經常丟失和創建的表的特定用戶角色的權限?

P.S:這個問題是vertic的,但所有的想法都是值得歡迎的。同時也是業務需求下降,我們甚至無法截斷表格並清除數據。

+0

爲什麼不自動化呢? – Kermit

+0

告訴業務夥伴保持技術領域的需求。 :-)我很難想象爲什麼'TRUNCATE TABLE'不會被允許。 – woot

回答

0

不幸的是,Vertica不支持可以針對數據庫中的任何表或視圖運行SELECT語句的固定角色(例如SQL Server db_datareader角色)。 因此,根據您創建對象的方式(DBA創建,工作流或任何ETL工具),您需要自動執行此操作。 你可以創建一個UDP來爲你做這件事,並在你的工作,腳本,工作流中調用UDP。 你也可以創建一個UDP來提取實際的授權,訪問該對象,並將其存儲在臨時文件中,以便在對象重新創建後執行。

但問題是?重新創建所需的表格?這有什麼用處?也許有更好的解決方案! 而且@你要停止投票!

0

重新創建表格時,必須按步驟執行。

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; 
相關問題