ALTER DATABASE(カタログリンク)¶
既存の カタログリンクデータベース のプロパティを変更します。
データベースの変更には、次のアクションが含まれます。
自動検出の有効化または無効化。
許可された名前空間とブロックされた名前空間の変更。
リモートカタログ内のスキーマとテーブルを自動的に検出するためにSnowflakeが使用する時間間隔を変更します。
リモートカタログを読み取り専用にするか書き込み可能にするかを変更します。
構文¶
ALTER DATABASE [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER DATABASE [ IF EXISTS ] <name> SUSPEND DISCOVERY
ALTER DATABASE [ IF EXISTS ] <name> RESUME DISCOVERY
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
ADD ( '<namespace>' [ , ... ] ) TO ALLOWED_NAMESPACES
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
REMOVE ( '<namespace>' [ , ... ] ) FROM ALLOWED_NAMESPACES
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
UNSET ALLOWED_NAMESPACES
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
ADD ( '<namespace>' [ , ... ] ) TO BLOCKED_NAMESPACES
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
REMOVE ( '<namespace>' [ , ... ] ) FROM BLOCKED_NAMESPACES
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
UNSET BLOCKED_NAMESPACES
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
SET SYNC_INTERVAL_SECONDS = <value>
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
SET ALLOWED_WRITE_OPERATIONS = { NONE | ALL }
ALTER DATABASE [ IF EXISTS ] <name> SET [ BASE_LOCATION_PREFIX = '<string>' ]
[ COMMENT = '<string_literal>' ]
[ CONTACT <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ]
ALTER DATABASE [ IF EXISTS ] <name> UNSET { BASE_LOCATION_PREFIX |
COMMENT |
CONTACT
}
パラメーター¶
name変更するカタログリンクデータベースの識別子を指定します。
識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
詳細については、 識別子の要件 をご参照ください。
RENAME TO new_nameカタログリンク データベースの名前を
new_nameに変更します。新しい識別子は、アカウントに対して一意にする必要があります。詳細については、 識別子の要件 をご参照ください。
オブジェクトの名前を変更すると、そのオブジェクトを参照する他のオブジェクトも新しい名前で更新する必要があります。
SUSPEND DISCOVERY自動検出を一時停止します。根本的な問題によってSnowflakeがリモートカタログ内のテーブルを検出できない場合、不要なクレジットやリソースの消費を防ぐために自動検出を一時停止することができます。たとえば、権限不足や構成ミスなどの根本的な問題がある場合、自動検出を一時停止することができます。問題を解決したら、 ALTER DATABASE ... RESUME DISCOVERY を実行し、検出を再開します。
自動検出が一時停止されていることを確認するには、 SYSTEM$CATALOG_LINK_STATUS 関数を呼び出し、
executionStateフィールドがSUSPENDEDに設定されていることを確認します。自動検出を一時停止しても、自動検出タスクが現在実行中の場合は、タスクが完了するまで実行状態は一時停止に変更されません。注釈
自動検出を一時停止しても、自動更新はオフになりません。既存のIcebergテーブルの自動更新をオフにするには、 自動リフレッシュの有効化または無効化 をご参照ください。
RESUME DISCOVERY自動検出を再開します。次のような理由で検出を再開する必要がある場合があります。
ある問題を解決するために検出を一時停止し、検出を再開する準備が整った。
権限の修正など、最近の変更を確実に取得するために、直ちに検出を強制的に実行する必要がある。
自動検出が再開されたことを確認するには、 SYSTEM$CATALOG_LINK_STATUS 関数を呼び出し、
executionStateフィールドがRUNNINGに設定されていることを確認します。UPDATE LINKED_CATALOGカタログリンクデータベースに適用されるプロパティを更新します。以下のプロパティを設定できます。
ADD ( 'namespace1' [ , 'namespace2' , ... ] ) TO ALLOWED_NAMESPACESリモートカタログ内の1つ以上の名前空間を指定して、自動検出の範囲を制限します。。Snowflakeは、指定された名前空間と、それらの下にネストされているすべての名前空間とテーブルを同期します。
カタログリンクデータベースを空の ALLOWED_NAMESPACES リストを使用して作成した場合、Snowflakeはリモートカタログから*すべての*名前空間とテーブルを同期します。
後で ALLOWED_NAMESPACES パラメーターを指定してデータベースを変更し、特定の名前空間のリストのみを許可すると、Snowflakeはカタログリンクデータベースを更新して、許可した名前空間のみを保持します。他のすべての名前空間とテーブルは、カタログリンクデータベースから削除されます。
ALLOWED_NAMESPACES のリストを使用してカタログリンクデータベースを作成した場合、Snowflakeはカタログリンクデータベースに許可された名前空間のみを作成します。
後でデータベースを変更して ALLOWED_NAMESPACES リストに名前空間を追加すると、Snowflakeは新しく追加された名前空間のみを作成し、既存の許可された名前空間を保持します。ALLOWED_NAMESPACES リストから名前空間を削除すると、Snowflakeはカタログリンクデータベースから新しく削除された名前空間のみを削除し、残りの許可された名前空間をすべて保持します。
ネストされた名前空間が ALLOWED_NAMESPACES リストにあるのに、 NAMESPACE_MODE パラメーターを IGNORE_NESTED_NAMESPACE に設定した場合、Snowflakeはネストされた名前空間やその下のスキーマとテーブルを同期しません。
REMOVE ( 'namespace1' [ , 'namespace2' , ... ] ) FROM ALLOWED_NAMESPACES許可された名前空間のリストから削除するリモートカタログ内の1つ以上の名前空間を指定します。
UNSET ALLOWED_NAMESPACES許可された名前空間のリストをデフォルト(すべての名前空間が許可される)に設定解除します。
ADD ( 'namespace1' [ , 'namespace2' , ... ] ) TO BLOCKED_NAMESPACES自動検出をブロックするために、リモートカタログで1つ以上の名前空間を指定します。
Snowflakeは、指定された名前空間と、それらの下にネストされているすべての名前空間とテーブルをブロックします。
ALLOWED_NAMESPACES と BLOCKED_NAMESPACES 両方を指定した場合、BLOCKED_NAMESPACES リストが優先されます。たとえば、
ns1.ns2が許可されていても、ns1がブロックされている場合、Snowflakeはns1.ns2を同期しません。REMOVE ( 'namespace1' [ , 'namespace2' , ... ] ) FROM BLOCKED_NAMESPACESブロックされた名前空間のリストから削除するリモートカタログ内の1つ以上の名前空間を指定します。
UNSET BLOCKED_NAMESPACESブロックされる名前空間のリストをデフォルト設定(ブロックされる名前空間は0)に戻します。
SET SYNC_INTERVAL_SECONDS = valueリモートカタログ内のスキーマとテーブルを自動的に検出するためにSnowflakeが使用する時間間隔を秒単位で指定します。時間間隔を長く設定することで、クレジットの消費を抑えることができます。
値:30から86400(1日)まで
デフォルト:30秒
SET ALLOWED_WRITE_OPERATIONS = { NONE | ALL }カタログリンクデータベースが読み取り専用か書き込み可能かを指定します。
NONE:カタログリンクデータベースは読み取り専用です。カタログリンクデータベースが読み取り専用である場合、カタログへのコミットを必要とする操作を実行すると、すべて失敗します。例:DROP ICEBERG TABLE。
ALL:カタログリンクデータベースは書き込み可能です。警告
カタログリンクデータベースの書き込み権限が有効になっている場合、Snowflakeはテーブルの削除をリモートカタログに伝播し、両方のシステムからテーブルとデータが削除されます。
デフォルト:
ALL
SET ...カタログリンクデータベースに設定する1つ以上のプロパティまたはパラメーターを、空白、カンマ、または改行で区切って指定します。
BASE_LOCATION_PREFIX = 'string'外部で管理されている Apache Iceberg™ テーブルの書き込みパスで Snowflake が使用するプレフィックスを指定します。詳細については、 :ref:` Icebergテーブルのデータおよびメタデータディレクトリ <label-tables_iceberg_configure_external_volume_base_location>` および BASE_LOCATION_PREFIX をご参照ください。
デフォルト: 値なし
COMMENT = 'string_literal'カタログリンクデータベースにコメントを追加するか、既存のコメントを上書きします。
CONTACT purpose = contact [ , purpose = contact ... ]既存のオブジェクトを、1つ以上の 連絡先 に関連付けます。
CONTACTプロパティを同じステートメント内の他のプロパティと一緒に設定することはできません。
UNSET ...データベースに対する1つまたは複数のプロパティまたはパラメーターの設定解除を指定します。これにより、デフォルトにリセットされます。
BASE_LOCATION_PREFIXCOMMENTCONTACT
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
|---|---|---|
OWNERSHIP |
変更されるカタログリンクデータベース。 |
自動テーブル検出を一時停止または再開するために必要です。 |
OWNERSHIP または MODIFY |
変更されるカタログリンクデータベース。 |
その他すべての操作に必要です。 |
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
例¶
カタログリンクデータベース my_linked_db の許可された名前空間のリストをデフォルトにリセットします。
ALTER DATABASE IF EXISTS my_linked_db UPDATE LINKED_CATALOG
UNSET ALLOWED_NAMESPACES;
カタログリンクデータベース my_linked_db の許可された名前空間のリストに my_namespace を追加します。
ALTER DATABASE IF EXISTS my_linked_db UPDATE LINKED_CATALOG
ADD ('my_namespace') TO ALLOWED_NAMESPACES;