エンタープライズ ジオデータベースは、ログ ファイル テーブルを使用して、選択されたレコードのリストを管理します。レコードは、アプリケーションが次のような場合に後で使用できるように、ログ ファイル テーブルに書き込まれます。
- クライアントで特定のサイズ (ArcMap では 100 レコード、ArcGIS Pro では 1,000 レコード、フィーチャ サービスから ObjectID が要求された場合は 1,000 レコード) の選択セットが作成される。
- バージョン対応登録されたジオデータベースにリコンサイルまたはポストする。
- クライアント アプリケーションが、切断された編集のデータをチェック アウトする。
ログ ファイル テーブルには選択されたフィーチャの ObjectID が格納されるため、それらを再表示することが可能です。これにより、情報の解析や処理がより高速になります。
ログ ファイルには、共有、セッションベース、セッションベース ログ ファイルのプールの 3 つのオプションがあります。このトピックでは、それぞれのオプションについて説明します。
SQL Server のジオデータベースは、一時データベース (tempdb) に作成されたセッションベース ログ ファイルをデフォルトで使用します。ほとんどの場合はデフォルトで十分であり、これが推奨されます。ただし、この設定を変更する場合は、「ログ ファイル テーブル設定の変更」をご参照ください。
セッションベース ログ ファイル
セッションベース ログ ファイル データ テーブルは単一のセッションに割り当てられ、複数の選択セット (ログ ファイル) を含む場合があります。ログインする各セッションには、選択のための一連のテーブルが必要です。
セッションベース ログ ファイルを使用する場合
ジオデータベースが SQL Server に格納されている場合には、必ずセッションベース ログ ファイルを使用する必要があります。運用されている SQL Server ではセッションベース ログ ファイル テーブルを tempdb データベースに作成することが可能です。つまり、ジオデータベースで管理するテーブルは存在せず、トランザクション ログは最小限に保たれ、すべてのユーザーにデータベースの CREATE TABLE 権限を割り当てる必要がないということです。運用されているデータベース上にある SQL Server のジオデータベースでは、これがデフォルトの設定になっているため、このログ ファイル オプションを使用するために設定を変更する必要はありません。
セッションベース ログ ファイルのために作成されるテーブル
SQL Server のデフォルト設定では、##SDE_SESSION<SDE_ID >_<DBID> という形で 1 つのテーブルが tempdb に作成されます。<SDE_ID> は SDE_process_information テーブルにある一意のセッション ID です。<dbid> は SQL Server のデータベース ID です。このテーブルは、接続しているアプリケーションがログ ファイルを削除したときに空になります。テーブル自体はセッションの終了時に削除されます。一時オブジェクトは、Management Studio のオブジェクト エクスプローラーには表示されないことに注意してください。
セッションベース ログ ファイル テーブルが (tempdb ではなく) ジオデータベース内に直接作成される場合、SDE_LOGFILES、SDE_LOGFILE_DATA、SDE_SESSION<SDE_ID> という 3 つのテーブルが作成されます。実際には、SDE_LOGFILE_DATA はこの場合は使用されませんが、自動的に作成されます。SDE_LOGFILES テーブルには、選択セットの情報と、SDE_SESSION テーブルの名前に付加されているセッション タグの <SDE_ID> が格納されます。SDE_SESSION テーブルには、選択されたセットのフィーチャ ID とログ ファイル ID が格納されます。
SDE_LOGFILES テーブルと SDE_LOGFILE_DATA テーブルは、ジオデータベースに残ります。SDE_LOGFILES テーブルは、アプリケーションの接続が切断されたときに空になります。SDE_SESSION<SDE_ID> テーブルは、接続しているアプリケーションがログ ファイルを削除したときに空になります。テーブル自体はセッションの終了時に削除されます。
セッションベース ログ ファイル テーブルとインデックスの格納を制御する設定
sde_dbtune テーブルの LOGFILE_DEFAULTS キーワードには、ログ ファイル テーブルをデータベースに格納する方法と場所を制御するいくつかのパラメーターがあります。セッションベース ログ ファイルを使用するためにこれらのパラメーターを設定する必要はありませんが、SDE_LOGFILES、SDE_LOGFILE_DATA、および SDE_SESSION テーブルとインデックスをデータベースに格納する方法を変更する場合には、パラメーターを設定することができます。
SQL Server で使用されるパラメーターは、次のとおりです。
- LD_INDEX_ALL
- LD_STORAGE
- LF_CLUSTER_ID
- LF_CLUSTER_NAME
- LF_INDEX_ID
- LF_INDEX_NAME
- LF_STORAGE
- SESSION_TEMP_TABLE
tempdb にセッションベース ログ ファイル テーブルを作成するには、SESSION_TEMP_TABLE パラメーターを 1 (true) に設定する必要があります。
SESSION_TEMP_TABLE パラメーターの値を 0 (false) に変更すると、接続しているユーザーのスキーマに SDE_LOGFILES、SDE_LOGFILE_DATA、および SDE_SESSION<SDE_ID> テーブルが作成されます。これは、ユーザーに権限が必要であることを意味します。
これらのパラメーターの詳細については、「SQL Server のコンフィグレーション パラメーター」をご参照ください。
セッションベース ログ ファイルに必要な権限
運用されているデータベースに SQL Server の推奨設定を使用する場合、ユーザーに必要なのはデータベースに接続できることだけです。しかし、SDE_dbtune SESSION_TEMP_TABLE パラメーターを 0 に変更した場合、接続するユーザーはデータベースで CONNECT 権限に加えて CREATE TABLE 権限が必要になります。
共有ログ ファイル
共有ログ ファイルは、同じユーザーとして接続するすべてのセッションで共有されます。複数のユーザーが同じユーザー アカウントで接続する場合、それらのセッションはすべて、同じログ ファイルのデータ テーブルに対してレコードを挿入または削除します。
共有ログ ファイルを使用する場合
共有ログ ファイルは、tempdb にテーブルを作成したくない場合で、かつ、同時セッションの数が多く、各セッションが個々のユーザー アカウントを使用して接続する場合にのみ使用します。
共有ログ ファイルを使用しない場合
ログ ファイル テーブルを各ユーザーのスキーマに格納しない場合は、共有ログファイルを使用しません。
共有ログ ファイルのために作成されるテーブル
このオプションで使用されるログ ファイル テーブルは、SDE_LOGFILES と SDE_LOGFILE_DATA です。これらは、ユーザーが閾値を超える選択を最初に行ったときに、接続ユーザーのスキーマに作成されます。
SDE_LOGFILES には、作成される各選択セット (ログ ファイル) に関する情報が格納されます。このテーブルの logfile_name 列と logfile_id 列はログ ファイルの名前を一意に識別し、logfile_id 列はログ ファイル レコードを SDE_LOGFILE_DATA テーブルにリンクします。SDE_LOGFILE_DATA テーブルには、選択したレコードの logfile_data_id とフィーチャ ID が含まれます。
すべてのレコードは、選択セットが解除されるとすぐに削除され、SDE_LOGFILE_DATA テーブルのサイズが大きくなりすぎることを防ぎます。SDE_LOGFILES テーブルは、セッションが終了するときに空になります。SDE_LOGFILE_DATA と SDE_LOGFILES は、どちらもユーザーのスキーマに残ります。
共有ログ ファイルに必要な権限
ログ ファイル テーブルは接続するユーザーが所有するため、ユーザーにはテーブルなどの必要なデータ オブジェクトを作成するための権限が付与されている必要があります。これは、ユーザーがジオデータベースに対する読み取り専用アクセス権限を持っている場合でも必要です。これらの権限が付与されていない場合、ユーザーには特定のクライアント アプリケーションで閾値のサイズを超える選択セットを最初に作成したときに、エラー メッセージが返されます。ただし、一度ユーザーの SDE_LOGFILES テーブルと SDE_LOGFILE_DATA テーブルが作成されたら、ジオデータベース管理者はこれらの権限を取り消すことができます。
たとえば、Ian は都市計画者で、ジオデータベースからデータを選択して自分の作業に関連する分析だけを実行します。したがって、Ian は読み取り専用のユーザーと考えられます。ただし、Ian は都市のエンタープライズ ジオデータベースに SDE_LOGFILES テーブルと SDE_LOGFILE_DATA テーブルを作成するため、ジオデータベースにテーブルを作成できる必要があります。
ジオデータベース管理者は、テーブルを無制限に作成する権限を Ian に付与せず、ジオデータベースにログインして閾値を超える選択を行うように Ian に要求します。次に、ジオデータベース管理者は、Ian のテーブル作成権限を取り消します。
SQL Server で共有ログ ファイル テーブルを使用する際に必要な権限は、次のとおりです。
- CONNECT
- CREATE TABLE
共有ログ ファイル テーブルおよびインデックスの格納に関する制御 (オプション)
SQL Server で使用されるパラメーターは、次のとおりです。
- LD_INDEX_ALL
- LD_STORAGE
- LF_CLUSTER_ID
- LF_CLUSTER_NAME
- LF_INDEX_ID
- LF_INDEX_NAME
- LF_STORAGE
詳細については、「SQL Server のコンフィグレーション パラメーター」をご参照ください。
ジオデータベース管理者が所有するログ ファイルのプール
ジオデータベース管理者は、他のユーザーがチェックアウトして使用できるセッションベース ログ ファイルのプールを作成できます。共有ログ ファイルをログ ファイル プールからチェックアウトすることはできません。
ログ ファイルのプールを使用することで、データベースにオブジェクトを作成するために必要な権限をユーザーに付与する必要がなくなります。
ログ ファイル プールを使用する場合
ログ ファイルのプールは、各自のスキーマにログ ファイル テーブルを作成する権限をユーザーに付与することができない場合に使用します。ただし、ユーザーにはセッションを作成する権限またはデータベースに接続する権限が必要です。
ログ ファイル プールを使用しない場合
全体として、ログ ファイルのプールを使用する場合は必要な保守作業が少し増えます。これは、必要なログ ファイル テーブルの数を見積もる必要があり、プールのサイズまたは使用するプールの数の調整を行うためです。ログ ファイル プールのサイズが大きい場合や、ログ ファイル プールの数が多い場合は、パフォーマンスに悪影響が出る可能性があることに注意してください。
ログ ファイル プール用に作成されるテーブル
[ジオデータベース ログファイル テーブルの構成 (Configure Geodatabase Logfile Tables)] ツールがジオデータベース管理者のスキーマに作成する SDE_LOGPOOL_<テーブル ID> テーブルの数を指定します。たとえば、テーブル数 5 を指定した場合、ジオデータベース管理者のスキーマには次のテーブルが作成されます。
- SDE_LOGPOOL_1
- SDE_LOGPOOL_2
- SDE_LOGPOOL_3
- SDE_LOGPOOL_4
- SDE_LOGPOOL_5
ジオデータベース管理者のスキーマ内の追加テーブル SDE_LOGFILE_POOL には、セッションの SDE_ID とテーブル ID が記録されます。SDE_LOGPOOL テーブルの名前に含まれる <table_ID> は、SDE_LOGFILE_POOL テーブルの table_ID 列の値と一致します。
ログ ファイル テーブルを必要とするセッションごとに、1 つのレコードが SDE_LOGFILE_POOL テーブルに追加され、各セッションは SDE_LOGPOOL_<テーブル ID> テーブルのうちのいずれかに割り当てられます。同じセッションで追加のログ ファイルが作成された場合 (たとえば、1 つの ArcMap セッションで 300 レコードの 2 つ目の選択セットが作成された場合)、新しいログ ファイル (選択セット) は同じ SDE_LOGPOOL テーブルに追加されます。
ログ ファイルが消去されるときに、セッションにチェックアウトされている SDE_LOGPOOL テーブルは空になります。たとえば、ArcMap セッションで 2 つ目の選択セットが解除された場合、SDE_LOGPOOL テーブルから 300 レコードが削除されますが、1 つ目の選択セットのレコードは残っています。1 つ目の選択セットが解除されると、これらのレコードが SDE_LOGPOOL テーブルから削除されます。
スタンドアロン ログ ファイルのプールを使用する場合は、ログ ファイルごとに SDE_LOGFILE_POOL テーブルに新しいレコードが作成され、SDE_LOGPOOL テーブルの 1 つが使用されます。たとえば、1 つの ArcMap セッションで、(1) 事業所に関する情報を格納するフィーチャクラスから、食品を提供するライセンスを受けたすべての事業所を選択し、(2) 雨水管情報を保存するフィーチャクラスから、食品を提供する事業所から 1 km 以内にあるすべての集水溝を選択した場合、SDE_LOGFILE_POOL テーブルには事業所の選択セット用と集水溝の選択セット用の 2 つのレコードが追加されます。各選択セットは、それぞれに独自の SDE_LOGPOOL テーブルに割り当てられます。
ログ ファイル (選択セット) を解除するときに、対応する SDE_LOGPOOL テーブルが空になります。
ログ ファイル プールに必要な権限
プールのログ ファイル テーブルを使用する場合、データベースに接続し、ジオデータベース管理者スキーマのオブジェクトを使用できることのみがユーザーに必要とされます。したがって、ログ ファイル テーブルのプールを使用するために必要な権限は CONNECT 権限のみです。
CONNECT 権限はデフォルトですべてのユーザーに割り当てられます。したがって、この権限を明示的に割り当てる必要があるのは、この権限を PUBLIC から削除した場合だけです。
ログ ファイル プールの格納に関する制御 (オプション)
sde_dbtune テーブルの LOGFILE_DEFAULTS キーワードに、SDE_LOGPOOL<SDE_ID> とそのインデックスを格納する方法を制御するパラメーターは数個しかありません。
SQL Server のエンタープライズ ジオデータベースでは、SDE_LOGPOOL<SDE_ID> テーブルとそのインデックスの格納の設定に、SDE_dbtune テーブルの LD_STORAGE および LD_INDEX_ALL パラメーターを使用します。この 2 つのパラメーターは、SDE_LOGFILE_DATA テーブルとインデックスの格納も制御します。これらのパラメーターの詳細については、「SQL Server のコンフィグレーション パラメーター」をご参照ください。
ログ ファイル テーブルのプールを使用するためにこれらのパラメーターを設定する必要はありませんが、SDE_LOGPOOL<SDE_ID> テーブルとインデックスをデータベースに格納する方法を変更する場合には、パラメーターを設定することができます。