ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

使用 SQL 编辑 SQL Server 中的版本化数据

  • 编辑“默认”版本
  • 编辑命名版本
  • 从编辑命名版本切换回编辑“默认”版本
  • 协调编辑内容并提交到命名版本
复杂程度:
初级
数据要求:
使用自备的数据

要使用 SQL 编辑注册为版本化的(传统)数据,您必须使用版本化视图。您可以通过版本化视图编辑默认版本或指定版本。有关每种选项的说明,请参阅使用 SQL 编辑版本化数据概述。

大多数情况下,您将仅使用一种编辑模式。但可以在同一个站点使用两种模式;因此,本工作流将介绍如何使用这两种模式,这样您可以了解如何在两种模式间转换。如果仅使用一种模式,请阅读特定于要使用的编辑模式的部分。

编辑“默认”版本

您可以使用 SQL 连接到“默认”版本并编辑版本化视图。不必打开编辑会话。当开始编辑时,会自动连接到“默认”版本的当前状态。

您应该在每次编辑后进行提交,以免阻止其他用户访问表或要素类的增量表。

在以下步骤中,编辑了版本化视图 (blic_evw)。对该视图所做的编辑将写入 blic 版本化表的增量表中。由于仅有少量编辑,因此将在默认版本中进行编辑。

  1. 从 SQL 客户端连接到数据库。确保以具有编辑数据集和版本化视图的权限的用户身份进行连接。
  2. 使用 SQL 对版本化视图执行第一次编辑。

    在本例中,对现有行进行更新以更改属性所有者名称。

    UPDATE blic_evw 
    SET propowner = 'C. O. Industry' 
    WHERE lic = 44977;
    
  3. 进行下一次编辑。

    一条新记录会通过版本化视图添加到表中。表包含几何列(位置)。

    INSERT INTO blic_evw (propowner, date_entered, location)
    VALUES (
      'Moe Esposito', 
      GETDATE(), 
      geometry::STGeomFromText ('POINT (0.0125662 0.0046711)', 12));
    

    提示:

    在 INSERT 语句中未指定 ObjectID 值;版本化视图会自动获取下一个可用 ObjectID,然后为该行插入此 ObjectID。

编辑命名版本

您需要对 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 版本化视图在该版本中进行编辑。

  1. 打开 Transact-SQL 查询窗口并执行 create_version 过程创建用于执行编辑的命名版本。
    EXEC sde.create_version 'sde.DEFAULT', 'myedits12111', 1, 2, 'version for my mv edits';
    
  2. 将编辑会话的版本设置为刚刚创建的子版本。
    EXEC sde.set_current_version 'myedits12111';
    
  3. 通过执行 edit_version 存储过程并指定 1 来启动编辑会话。
    EXEC sde.edit_version 'myedits12111', 1;
    

    1 表示应启动编辑会话。

  4. 使用 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;
    
  5. 使用 SQL 执行更多编辑。完成下一组编辑后,关闭编辑会话。
  6. 通过执行 edit_version 存储过程并指定 2 来停止编辑会话。2 表示应结束编辑会话。
    EXEC sde.edit_version 'myedits', 2;
    

    提示:

    每个编辑会话只能编辑一个版本。例如,如果要编辑第二个版本(如 mynewedits),则必须关闭针对 myedits12111 的编辑会话,如该步骤所示。然后可以执行 set_current_version 指向 mynewedits 版本,并通过执行 edit_version 来启动编辑会话。

从编辑命名版本切换回编辑“默认”版本

如果需要直接返回编辑“默认”版本(例如,管理员通知您站点上的其他用户需要立即查看特定的编辑),可以执行 version_user_ddl.set_default 以切换回编辑“默认”版本。只要连接到“默认”版本的其他用户刷新其客户端连接,就能看到您对“默认”版本所进行的编辑。

用于编辑“默认”版本的地理数据库的存储过程及其语法如下:

存储过程用途语法和描述

set_default

返回以编辑“默认”版本的当前状态。

如果您正在编辑一个命名版本或特定状态的“默认”版本,但想返回编辑当前状态的“默认”版本,则执行此过程。

EXEC {sde | dbo}.set_default

  1. 在 Transact-SQL 窗口中执行 set_default 程序。
    EXEC sde.set_default;
    

    会话现在即设置为编辑“默认”版本引用的当前状态。

  2. 编辑 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 中使用协调版本地理工具或 Python 脚本来实现。有关详细信息,请参阅以下主题:

  • 快速浏览:协调版本
  • 协调版本
  • 查看冲突快速浏览
  • 提交更改
  • 协调版本
提示:

如果编辑的数据已注册为版本并且选择了将编辑内容移动到基表的选项,则编辑内容在协调和提交到“默认”版本后将移动到基表中。

将编辑内容提交到“默认”版本后,即可删除命名版本。用于在协调并提交到地理数据库的“默认”版本后删除命名版本的存储过程及其语法如下:

存储过程用途语法和描述

delete_version

删除地理数据库版本。

EXEC {dbo | sde}.delete_version '<child_version>'

以下示例在协调所有编辑内容并将其提交到“默认”版本后,删除 myedits12111:

EXEC sde.delete_version 'myedits12111';

相关主题

  • 使用 SQL 编辑版本化数据的概述
  • 什么是版本化视图?
  • 通过 ArcGIS Desktop 启用对地理数据库数据的 SQL 访问
  • Version_View_Name
  • Is_Versioned

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2021 Esri. | 隐私政策 | 法律声明