マルチテナントデータベースコンテナを含むシステムには、明確なルールがあります。
各テナントデータベースには、独自のデータベース管理者アカウントとエンドユーザがあります。特定のマルチテナントデータベースコンテナのユーザに付与されたシステム権限は、そのデータベースでの操作にのみ有効です。
システムデータベースでは、このルールの例外が指定されます。
ユーザにシステム権限 DATABASE ADMIN が割り当てられている場合、この権限により、ユーザは個々のテナントデータベースで操作を実行できます。たとえば、テナントデータベースの登録または削除、設定 (*.ini) ファイルのデータベース固有プロパティの変更、およびデータベース固有のバックアップの実行が可能です。
システムデータベースおよびすべてのテナントデータベースには、それぞれ独自の SYSTEM ユーザがあります。システムデータベースの SYSTEM ユーザには、上述のシステム権限 DATABASE ADMIN がすでに割り当てられています。
複数コンテナシステムでは、特定のデータベースのユーザに付与された権限によって、そのデータベースのデータベースオブジェクトへのみアクセスと修正が許可されます。
マルチテナントデータベースコンテナのデータベース間クエリ
複数コンテナシステムの各テナントデータベースは、独自の分離したデータベースユーザのセットと分離したデータベースカタログがある自己完結型です。ただし、クロスアプリケーションレポートをサポートするため、データベース間の SELECT クエリが可能です。つまり、テーブルやビューなどのデータベースオブジェクトは、1 つのデータベースに対してローカルにすることができますが、同じシステム内の他のデータベースからユーザが読み込むことができます。
あるデータベース内のユーザは、リモートデータベースで十分な権限を持つユーザと関連付けられている場合、別のデータベースのオブジェクトを参照するクエリを実行できます。この関連付けられたユーザはリモート ID と呼ばれます。これは、リモートデータベースでクエリ (またはクエリの一部) を実行するユーザ、つまり権限がチェックされるユーザです。
データベース間アクセスはデフォルトで有効化されていないため、このようなユーザマッピングを設定する前に設定する必要があります。
デフォルトでは、テナント間のデータベース間アクセスは無効です。複数のテナントデータベースにまたがるクエリを実行するには、グローバルデータベース間アクセススイッチをオンにする必要があります。相互通信が許可されているデータベースの許可リストも設定する必要があります。
注記
マルチテナントデータベースコンテナ間の読込専用クエリは、要求するユーザとリモートデータベースまたはデータベース上のリモート ID を関連付けることによって可能になります。データベース間クエリ (連携) は、SQL エンジンおよび計算エンジンでサポートされています。




