SQL を使用してバージョン対応登録された (トラディショナル) データを編集するには、バージョン対応ビューを使用する必要があります。バージョン対応ビューからデフォルト バージョンまたは名前付きバージョンを編集できます。各オプションの説明は、「SQL を使用してバージョン対応登録されたデータを編集する方法の概要」をご参照ください。
ほとんど場合、使用する編集モデルは 1 つだけです。ただし、同じシステムで両方を使用することも可能です。そのため、このワークフローでは、この 2 つの編集モデルの切り替え方法がわかるように、両方の使用方法を説明します。1 つのみ使用する場合は、使用する編集モデルのセクションをお読みください。
デフォルト バージョンの編集
SQL を使用してデフォルト バージョンに接続し、バージョン対応ビューを編集することができます。編集セッションを開く必要はありません。編集を開始すると、デフォルト バージョンの現在のステートに自動的に接続されます。
編集後は、テーブルまたはフィーチャクラスの差分テーブルに他のユーザーがアクセスできるようにコミットする必要があります。
次の手順では、バージョン対応ビュー (blic_evw) を編集します。このビューへの編集内容は、バージョン対応登録された blic テーブルの差分テーブルに書き込まれます。編集は数か所しかないため、デフォルト バージョンに対して編集が行われます。
- SQL クライアントからデータベースに接続します。必ず、データセットとバージョン対応ビューを編集できる権限を持つユーザーとして接続してください。
- SQL を使用してバージョン対応ビューに最初の編集を実行します。
この例では、既存の行が更新され、所有者名のプロパティが変更されています。
UPDATE blic_evw SET propowner = 'C. O. Industry' WHERE lic = 44977;
-
次の編集を行います。
バージョン対応ビューを通して、新しいレコードがテーブルに追加されます。テーブルにはジオメトリ列 (location) があります。
INSERT INTO blic_evw (propowner, date_entered, location) VALUES ( 'Moe Esposito', GETDATE(), geometry::STGeomFromText ('POINT (0.0125662 0.0046711)', 12));
名前付きバージョンの編集
blic フィーチャクラスに更新内容が多数ある場合は、名前付きバージョンでの編集が適しています。
ジオデータベースの名前付きバージョンを編集するのに使用するストアド プロシージャと構文は次のとおりです。
ストアド プロシージャ | 目的 | 構文と説明 |
---|---|---|
create_version | ジオデータベースの名前付きバージョンを作成します。 名前付きバージョン (デフォルト以外のバージョン) を編集している場合は、必ず独自の個別バージョンを編集します。複数の編集者がバージョン対応ビューを使用して同じ名前付きバージョンを編集することはできません。 | EXEC {dbo | sde}.create_version '<parent_version>', '<child_version>', <name_rule>, <access>, '<description>' |
set_current_version | アクセスするジオデータベース バージョンとステートを設定します。 set_current_version を実行したとき、バージョンが指している状態にアクセスします。 | EXEC {dbo | sde}.set_current_version '<child_version>' |
edit_version | 名前付きバージョンでの編集セッションを開始および終了します。 トランザクション内の編集データは、このプロシージャを実行したときにコミットされます。 | EXEC {dbo | sde}.edit_version '<child_version>',{1 | 2} 編集セッションを開始するときは 1 を指定し、 終了するときは 2 を指定します。 |
実行ステートメントのパラメーターは次のとおりです。
- {dbo|sde} は、プロシージャを所有するユーザーを示します。sde スキーマ ジオデータベースの場合、sde を使用します。dbo スキーマ ジオデータベースの場合、dbo を使用します。
- <parent_version> はバージョンの作成元となるバージョンです。
- <child_version>: 編集用に作成する名前付きバージョンです。
- <name_rule> はバージョン用に指定された名前をそのまま使用するか(2)、それとも、重複する名前が指定されたときは一意の名前を作成するか(1)を示します。
- <access>: バージョンの権限レベルです。0 はプライベート、1 はパブリック、2 はプロテクトを表します。
- <description> はテキストによる子バージョンの説明です。
次の手順では、デフォルト バージョンから名前付きバージョン (myedits12111) が作成され、blic_evw バージョン対応ビューを通してこのバージョンに編集が加えられます。
- Transact-SQL クエリ ウィンドウを開いて、create_version プロシージャを実行し、編集を実行する名前付きバージョンを作成します。
EXEC sde.create_version 'sde.DEFAULT', 'myedits12111', 1, 2, 'version for my mv edits';
- 作成した子バージョンに対して編集セッション用のバージョンを設定します。
EXEC sde.set_current_version 'myedits12111';
- 1 を指定して edit_version ストアド プロシージャを実行し、編集セッションを開始します。
EXEC sde.edit_version 'myedits12111', 1;
1 は編集セッションの開始を意味します。
- SQL を使用して、バージョン対応ビューに一連の編集を実行します。
INSERT INTO blic_evw (propowner, date_entered, location) VALUES ( 'V. Nay', getdate(), geometry::STGeomFromText('point (0.0125699 0.0046700)', 12)); UPDATE blic_evw SET phone1 = '555.111.2345', phone2 = '555.111.6789' WHERE propowner = 'Tella Chomsky'; UPDATE blic_evw SET exp_date = '2020-06-30 17:00:00' WHERE lid = 22903; UPDATE blic_evw SET location = geometry::STGeomFromText('point (0.0125705 0.0046688)', 12)) WHERE lid = 8992; INSERT INTO blic_evw (codenum, propowner) VALUES (456, 'Anjo Badsu'); DELETE FROM blic_evw WHERE lid = 133;
- 2 を指定して edit_version ストアド プロシージャを実行し、編集セッションを終了します。2 は編集セッションの終了を意味します。
EXEC sde.edit_version 'myedits', 2;
名前付きバージョンの編集からデフォルト バージョンの編集への切り替え
たとえば、サイトの他のユーザーが特定の編集データをすぐに参照する必要があるとマネージャーから通知された場合など、デフォルト バージョンに戻って直接編集する必要がある場合は、version_user_ddl.set_default を実行して、デフォルト バージョンの編集に戻ることができます。デフォルト バージョンに接続している他のユーザーは、クライアント接続を更新するとすぐに、デフォルト バージョンに加えられた編集を参照することができます。
ジオデータベースのデフォルト バージョンを編集する場合に使用するストアド プロシージャとその構文を次に示します。
ストアド プロシージャ | 目的 | 構文と説明 |
---|---|---|
set_default | デフォルト バージョンの現在のステートの編集に戻ります。 名前付きバージョンまたはデフォルト バージョンの特定のステートを編集していて、デフォルト バージョンの現在のステートの編集に戻りたい場合は、このプロシージャを実行します。 | EXEC {sde | dbo}.set_default |
- Transact-SQL ウィンドウで、set_default プロシージャを実行します。
EXEC sde.set_default;
これで、セッションは、デフォルト バージョンが参照している現在のステートを編集するように設定されます。
- blic_evw バージョン対応ビューを編集します。
INSERT INTO blic_evw (propowner, b_name, date_entered, location) VALUES ( 'Ruben Gol', getdate(), 'Chez Coiffure', geometry::STGeomFromText('point (0.0125650 0.0046721)', 12));
デフォルト バージョンの同じステートやその系統のステートを指している他のクライアントは、接続を更新して、新しいポイント フィーチャを表示できます。
名前付きバージョンの編集のリコンサイルとポスト
名前付きバージョンでの編集が終了したら、ArcGIS を使用して、編集データのリコンサイル、競合の確認および解決、ポストを実行する必要があります。これは、ArcGIS Desktop で [バージョンのリコンサイル (Reconcile Versions)] ジオプロセシング ツールまたは Python スクリプトを使用して実行します。詳細については、以下のトピックをご参照ください。
編集データがデフォルト バージョンにポストされたら、名前付きバージョンを削除できます。リコンサイルしてジオデータベースのデフォルト バージョンにポストした後で名前付きバージョンを削除する場合に使用するストアド プロシージャとその構文を次に示します。
ストアド プロシージャ | 目的 | 構文と説明 |
---|---|---|
delete_version | ジオデータベース バージョンを削除します。 | EXEC {dbo | sde}.delete_version '<child_version>' |
次の例では、すべての編集データがリコンサイルされてデフォルト バージョンにポストされた後で、myedits12111 が削除されます。
EXEC sde.delete_version 'myedits12111';