ALTER DATABASE - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ALTER DATABASE

變更資料保護的定義。您可以使用 ALTER 數據保護添加對象或刪除對象。對要添加或刪除的數據保護對象具有所需權限的數據保護的所有者可以更改數據保護。

必要的權限

以下是 ALTER 數據保護所需的權限:

  • 超級使用者。

  • 具有 ALTER 數據保護權限的用户。

  • 對數據保護具有 ALTER 或 ALL 權限的用户。

  • 若要將特定對象添加至資料保護,用户必須擁有這些對象的權限。在這種情況下,用户應該是對象的所有者,或者對這些對象具有 SELECT、USAGE 或 ALL 權限。

Syntax (語法)

以下語法説明瞭如何向數據保護中添加或刪除對象。

ALTER DATASHARE datashare_name { ADD | REMOVE } { 
TABLE schema.table [, ...] 
| SCHEMA schema [, ...] 
| FUNCTION schema.sql_udf (argtype,...) [, ...] 
| ALL TABLES IN SCHEMA schema [, ...] 
| ALL FUNCTIONS IN SCHEMA schema [, ...] }

以下語法説明如何配置數據保護的屬性。

ALTER DATASHARE datashare_name { 
[ SET PUBLICACCESSIBLE [=] TRUE | FALSE ] 
[ SET INCLUDENEW [=] TRUE | FALSE FOR SCHEMA schema ] }

參數

數據庫名稱

要更改的資料報名稱。

添加 | 刪除

一個子句,它指定是向數據保護中添加對象還是從數據保護中刪除對象。

模式[,...]

要添加至資料欄的指定結構描述中的資料表或檢視。

模式模式[,...]

要添加至資料保的結構描述名稱。

功能模式平方英尺(參數類型,...) [,...]

用户定義的 SQL 函數的名稱,其中包含要添加到數據保護的參數類型。

架構中的所有資料表模式[,...]

一個子句,它指定是否將指定架構中的所有表和視圖添加到數據保護中。

架構中的所有函數模式[,...]}

一個子句,它指定將指定架構中的所有函數添加到數據保護中。

[設置公開訪問 [=] 為真 | 假]

一個子句,用於指定是否可以將數據保護共享給可公開訪問的羣集。

[設置包括 [=] 為真 | 模式為 FALSE模式]

一個子句,它指定是否將 future 的任何表、視圖或在指定架構中創建的 SQL 用户定義函數 (UDF) 添加到數據保護中。指定架構中的當前表、視圖或 SQL UDF 不會添加到數據保護中。只有超級用户可以為每個數據庫架構對更改此屬性。預設情況下,包含 W 子句為 false。

更改資料保護使用須知

  • 以下用户可以更改數據保護:

    • 超級使用者

    • 資料保護的擁有者

    • 對數據保護具有 ALTER 或 ALL 權限的用户

  • 要將特定對象添加到數據保護中,用户必須對這些對象具有正確的權限。用户應是對象的所有者,或者對這些對象具有 SELECT、USAGE 或所有權限。

  • 您可以共享方案、表、常規視圖、後期綁定視圖、實例化視圖和 SQL 用户定義函數 (UDF)。在架構中添加對象之前,首先將模式添加到數據保護中。

    當您添加架構時,Amazon Redshift 不會在其下添加所有對象。您必須明確添加它們。

  • 建議您建議您建立AWS Data Exchange開啟了公開訪問設置的數據碼。

  • 一般而言,建議您不要改變AWS Data Exchange數據保護,以使用 ALTER 數據保護語句關閉公共輔助功能。如果有看到,AWS 帳戶如果具有數據保護權限的羣集可以公開訪問,則會丟失訪問權限。執行這種類型的更改可能會違反AWS Data Exchange。有關此建議的例外情況,請參閲以下內容。

    下列範例顯示錯誤:AWS Data Exchange在關閉設置的情況下創建數據保護。

    ALTER DATASHARE salesshare SET PUBLICACCESSIBLE FALSE; ERROR: Alter of ADX-managed datashare salesshare requires session variable datashare_break_glass_session_var to be set to value 'c670ba4db22f4b'

    要允許更改AWS Data Exchange數據保護以關閉可公開訪問的設置,請設置以下變量並再次運行 ALTER DATASHARE 語句。

    SET datashare_break_glass_session_var to 'c670ba4db22f4b';
    ALTER DATASHARE salesshare SET PUBLICACCESSIBLE FALSE;

    在這種情況下,Amazon Redshift 會生成一個隨機的一次性值來設置會話變量,以允許 ALTER 數據保護設置公共訪問的AWS Data Exchange數據保護。

範例

下列範例會將public.tickit_sales_redshift表添加到數據保護salesshare

ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;

下列範例會將所有資料表添加至資料列salesshare

ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;

下列範例會移除public.tickit_sales_redshift表格從資料保護欄salesshare

ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;