SQL Server のマルチ空間データベース モデル
SQL Server 内のジオデータベースのマルチ空間データベース モデルは、SQL Server の ArcSDE ジオデータベース実装方法の一つです。このモデルのサポートは今でも行われていますが、シングル空間データベース モデルを使用することをお勧めします。シングル空間データベース モデルでは、すべてのジオデータベース テーブルが 1 つの SQL Server データベースに格納されています。
ArcSDE ジオデータベースに空間データを格納するには、一連のテーブル、ストアド プロシージャ、ビュー、関数が存在しなければなりません(これらをまとめて ArcSDE リポジトリと呼びます)。一連のユーザ定義データと関連する ArcSDE リポジトリは、1 つのジオデータベースを構成します。
ArcSDE 9 よりも前のバージョンでは、SQL Server のジオデータベースは常にマルチ空間データベース モデルを使用して格納されます。ArcSDE 9 以降は、シングル空間データベース モデルを使用する必要があります。ただし、推奨されませんがマルチ空間データベース モデルのサポートが今でも行われています。このモデルの説明は次のとおりです。
マルチ空間データベース モデルでは、ArcSDE リポジトリが sde という名前のデータベースに格納されます。フィーチャクラス、ラスタ、非空間テーブルなどのユーザ定義データは、他のデータベースに格納されます。sde データベースの ArcSDE リポジトリは、特定の ArcSDE インスタンスで関連するすべてのユーザ定義データの場所への参照を格納します。sde データベースとその他の関連データベースは、単一のジオデータベースを構成します。このデータ格納モデルは、マルチ空間データベース モデルと呼ばれます。これは、1 つの ArcSDE ジオデータベースの構成に複数の SQL Server データベースが必要なためです。
ジオデータベースの格納には、前のセクションで説明したシングル空間データベース モデルが推奨されます。次に、マルチ空間データベース モデルを使用する場合のルールとガイドラインを示します。
マルチ空間データベース インスタンスを使用するルール
- ArcSDE メタデータを格納するデータベースは、sde という名前でなければなりません。ユーザ定義データを格納するその他のデータベースには、SQL Server の識別子の命名規則に準拠した、数字で始まらない名前を付けることができます。
- SQL Server の各インスタンスでホストできるマルチ空間データベース インスタンスは 1 つだけです。SQL Server データベースの名前は一意でなければならず、したがって、1 つのインスタンスで sde という名前のデータベースを 1 つだけサポートできることになります。複数のジオデータベースを同じ SQL Server インスタンスに格納したい場合は、1 つのマルチ空間データベース インスタンスと複数のシングル空間データベース インスタンスを使用できます。
- マルチ空間データベース インスタンスでは、ArcSDE リポジトリは sde スキーマに存在しなければなりません。これらのインスタンスは dbo スキーマの ArcSDE リポジトリをサポートしません。ArcSDE ジオデータベース リポジトリに使用できる 2 つのタイプのスキーマの詳細については、「SQL Server 内でのジオデータベース所有者の比較」をご参照ください。
- ArcSDE ジオデータベースのシステム テーブルの所有者は、sde という名前のユーザでなければなりません(SQL Server 2005 以降では、sde ユーザのデフォルト スキーマも sde という名前であることを確認してください)。
- sde ユーザには、ユーザ定義の ArcSDE データを格納するすべてのデータベースへのアクセスを許可しなければなりません。
- ユーザ定義のデータが sde データベースに格納されない場合でも、このジオデータベース インスタンスに接続するすべてのユーザを sde データベースに追加する必要があります。ユーザが sde データベースにデータを格納する場合は、そのユーザ用のスキーマを sde データベースに新規に作成する必要があります。この場合も、ユーザ名とスキーマ名は同じでなければなりません。
- 1 つのデータベースに接続すると、SDE_dbtune テーブルの CROSS_DB_QUERY_FILTER パラメータが 0 に設定されている場合、アクセス権を持っているすべてのデータベースのフィーチャクラスにアクセスできるようになります。ただし、CROSS_DB_QUERY_FILTER パラメータの設定値にかかわりなく、空間データベース接続に指定したデータベースに格納されている非空間テーブルにのみアクセスすることができます。
- SDE_dbtune テーブルの CROSS_DB_QUERY_FILTER パラメータが 0 に設定されている場合、複数のデータベースにまたがる検索が可能になり、ArcSDE ビューで複数のデータベースのデータを参照することができるようになります。
- データベースの境界にまたがる SELECT、INSERT、UPDATE、DELETE ステートメントを使用することができます。これらは DML(Data Manipulation Language)とも呼ばれます。たとえば、public_works データベースに接続して、planning データベースのデータの表示と編集を行うことができます。ただし、データベースの境界にまたがる CREATE、ALTER、DROP(DDL)ステートメントを実行することはできません。
- ダイレクト コネクションでマルチ空間データベース ジオデータベースに接続する場合には、接続先のデータベースを指定しなければなりません。ArcSDE サービスを使用して接続する場合には、サーバ レジストリに接続する際に、sde データベースがデフォルト データベースとして設定されます。したがって、SDE_dbtune テーブルの CROSS_DB_QUERY_FILTER パラメータが 0 に設定されるため、データベース名を指定する必要はありません。
- sde データベースとその他の関連データベースは、単一のジオデータベースを構成します。ArcSDE ジオデータベースの 1 つのシステム テーブル セットが、参照するすべてのユーザ定義データをサポートします。このため、バックアップと復元をジオデータベース全体で実行する必要があります。すべてのデータベースのバックアップと復元を同時に行わないと、ジオデータベースが破損するおそれがあります。
- sde データベースとその他の関連データベースは、同じ照合順序を使用する必要があります。
- ArcSDE XML 列、またはインデックス化されたネイティブ SQL Server XML 列を含むすべての空間データベースには、独自のフルテキスト カタログが必要です。
- sde ユーザとその他のユーザに必要な権限の一覧については、「SQL Server でのジオデータベースに対するユーザ権限」をご参照ください。
マルチ空間データベース インスタンスを作成するためのガイドライン
次に、空間データを格納するデータベースを作成するためのガイドラインを紹介します。
- ArcSDE のポスト インストール ウィザードを使用して、ArcSDE リポジトリを格納するデータベースを作成します。ウィザードは、sde データベースを作成し、そのアクセス権限を sde アカウントに許可し、ArcSDE システム テーブルをインストールします。このデータベースの名前が sde であることを確認してください。
- データ ファイルに大きな初期サイズを設定した後、SQL Server Management Studio を使用して、データベース ファイルとトランザクション ログ ファイルの自動拡張オプションの値を引き上げます。この時点で、最初のバックアップを実行してください。
- ユーザ定義データを格納する追加のデータベースを作成するには、SQL Server の Management Studio などのツールを使用します。作成するデータベースには、sde ユーザを追加する必要があります。このユーザにデータベースの特別な権限を割り当てる必要はありません。データセットが作成される、またはバージョン対応登録されると、sde ユーザに権限が自動的に割り当てられます。
マルチ空間データベース モデルからシングル 空間データベース モデルへの移行
先に述べたように、シングル データベース モデルはジオデータベース用に推奨されるモデルです。マルチ データベース モデルで格納した既存のジオデータベースをシングル データベース モデルに移行したい場合は、次の手順に従います。
- すべての ArcSDE データベースの完全バックアップを実行します。
- ポスト インストール ウィザードを使用して、シングル データベース モデルのジオデータベースを作成します。必ず、使用しているバージョンのポスト インストール ウィザードを実行してください。たとえば、ArcSDE 9.1 でマルチ データベース モデルを使用していて、シングル データベース モデルに移行したい場合は、9.1 のポスト インストール ウィザードを実行して、シングル ジオデータベースを作成します。また、これらの操作は SQL Server の同じインスタンスで実行してください。メモ:
ArcSDE 8.3 を使用している場合は、まず、ArcSDE 9 以降にアップグレードしてから、シングル データベース モデルへ移行してください。
- Catalog のインタフェースを使用して、データを新しいシングル データベース モデルのジオデータベースへ移行します。
ポスト インストール ウィザードは、SQL Server に新しいデータベースを作成します。このため、新しいジオデータベースにアクセスするサービスを作成するか、ダイレクト コネクションをセットアップします。次に、ArcMap を起動して、カタログ ウィンドウを開き、元のマルチ データベース モデルと新しいシングル データベース モデルの両方に対して、コネクションを作成します。次に、コピーと貼り付け、インポートとエクスポート、またはその他のデータ移行手段を使用して、ジオデータベース間でデータを移行します。
メモ:新しいジオデータベースにデータが転送されると、そのジオデータベースにログインしていたユーザが、そのデータの所有者になります。したがって、同じデータの所有権を維持したい場合には、個々のユーザが独自のデータを転送する必要があります。