マルチバージョン対応ビューと SQL による SQL Server のバージョン対応データの編集
データに対して作成されたマルチバージョン対応ビューを編集することで、ジオデータベースのバージョン対応データを編集できます。
マルチバージョン対応ビューの操作に使用するストアド プロシージャが ArcSDE とともにインストールされます。そのコンポーネントと説明を以下に示します。
ストアド プロシージャ |
目的 |
構文と説明 |
---|---|---|
create_version |
新しいジオデータベース バージョンを作成します。 必ず、ユーザ自身の個別のバージョンを編集してください。マルチバージョン対応のビューで複数の編集者が同一のバージョンを編集することはできません。 |
EXEC {dbo | sde}.create_version '<parent_version>', '<child_version>', <name_rule>, <access>, '<description>'
|
set_current_version |
アクセスするジオデータベース バージョンを設定します。 |
EXEC {dbo | sde}.set_current_version '<version_name>'
|
edit_version |
編集セッションを開始もしくは終了します。 |
EXEC {dbo | sde}.edit_version '<version_name>',{1 | 2} 編集セッションを開始するときは、1 を指定します。終了するときは、2 を指定します。 |
delete_version |
ジオデータベース バージョンを削除します。 |
EXEC {dbo | sde}.delete_version '<version_name>' |
マルチバージョン対応ビュー経由でバージョン対応テーブルを編集するときは、デルタ テーブルに変更が加えられ、新しいレコードの行 ID(object ID)の値は自動的に生成されます。ただし、ArcGIS 編集セッションでバージョン対応データを編集するときとは違って、編集時に内部でバージョンのリコンサイルは実行されません。
さらに、マルチバージョン対応ビューで編集セッションを開始すると、バージョンが参照しているステートに排他ロックがかかります。 したがって、マルチバージョン対応ビューを使用して、DEFAULT バージョン、または、他のユーザから同時編集またはリコンサイルを受ける可能性のあるバージョンは編集しないようにしてください。競合が検出されず、ロックによって他のユーザがブロックされるからです。代わりに、マルチバージョン対応ビューの編集セッション専用の独自バージョンを作成します。
- リコンサイル、競合解決、ポストのようなバージョン管理操作は、ArcGIS ソフトウェアを使用して実行する必要があります。バージョン管理が不適切な場合、マルチバージョン対応ビューの操作によってジオデータベースが破壊される可能性があります。
- ArcSDE によってデータベース内に維持される行 ID(object ID)フィールドを、データベース管理システム(DBMS)のツールを使用して更新しないでください。 この object ID フィールドはジオデータベースによって割り当てられ管理されます。 SQL を使用して変更しないでください。
- SQL を使用してジオデータベースの DEFAULT バージョンを編集しないでください。 バージョンに対して編集セッションを開始すると、そのバージョンが参照しているステートに排他ロックがかかります。 DEFAULT バージョンがロックされた場合、他の ArcGIS ユーザはジオデータベースに接続できなくなります。
以下の手順は、マルチバージョン対応ビューの作成から、編集を実行するバージョンの作成、編集するバージョンの設定、編集セッションの開始、マルチバージョン対応ビュー経由での編集の実行、編集セッションの終了、編集内容のデータベースへのコミット、編集用に作成したバージョンの削除までの、一連の手順を示しています。例では、テーブルを編集するために作成するマルチバージョン対応ビューは code_mv で、作成して編集に使用するバージョンは mvedits です。
マルチバージョン対応ビュー経由で編集するデータセットは、バージョン対応登録されている必要があります。
-
MS-DOS コマンド プロンプトで sdetable ユーティリティを実行して、マルチバージョン対応ビューを作成します。
sdetable –o create_mv_view –T code_mv –t code_enf –i sde:sqlserver:myserver\ssinst –D code –u sarja –p not4u
-
編集を実行するバージョンを作成するには、create_version プロシージャを使用できます。
EXEC sde.create_version 'sde.DEFAULT', 'version2', 1, 2, 'version for my mv edits'
-
Transact SQL クエリ ウィンドウを開いて、set_current_version ストアド プロシージャを実行します。
EXEC sde.set_current_version 'version2'
注意:現在のバージョンを設定しなかった場合は、クエリするたびに DEFAULT バージョンの最新の状態が参照されます。現在のバージョンを設定した場合は、状態がキャッシュされ、指定したバージョンのビューは静的なままです。
-
1 を指定して edit_version ストアド プロシージャを実行し、編集セッションを開始します。
EXEC sde.edit_version 'version2', 1
1 は編集セッションの開始を意味します。
-
SQL を使用してマルチバージョン対応ビューに最初の編集を加えます。
この例では、既存のレコードを更新します。
UPDATE code_mv SET propowner = 'C. Industry' WHERE vid = 2233
-
SQL を使用してマルチバージョン対応ビューに次の編集を加えます。
この例では、テーブルにレコードを挿入します。
INSERT INTO code_mv (codenum, propowner) VALUES (456, 'Anjo Badsu')
ヒント:INSERT ステートメントでは object ID 値を指定しません。マルチバージョン対応ビューでは、次に使用可能なオブジェクト ID が自動的に取得されて行に挿入されます。
ArcSDE に登録され、ユーザ管理の object ID 列を持つテーブルをバージョン対応登録することは可能ですが、推奨されません。この方法の場合、INSERT ステートメントで object ID を指定する必要があります。マルチバージョン対応ビューが自動的に値を生成することはできません。
-
2 を指定して edit_version ストアド プロシージャを実行し、編集セッションを終了します。
EXEC sde.edit_version 'version2', 2
2 は編集セッションの終了を意味します。
-
すべての編集が終了したら、ArcGIS Desktop 経由で編集内容のリコンサイルとポストを実行して、ステップ 2 で作成したジオデータベース バージョンを削除します。データの変更を適用しない場合は、編集内容のリコンサイルとポストを実行しないで、ステップ 2 で作成したバージョンを削除することもできます。
EXEC sde.delete_version 'version2'