使用多版本化视图读取 SQL Server 中已版本化的数据

可以对多版本化视图执行 SQL SELECT 语句以访问版本化数据。

多版本化视图将自动访问 DEFAULT 版本。在对视图发出任何查询之前,必须确保您将查询所需的版本。

要访问特定版本的特定状态,可执行 ArcSDE set_current_version stored 存储过程。此过程将验证所提供的版本名称并在内部设置相应的数据库状态。可以从 SQL 客户端直接执行该过程。对于 sde 方案地理数据库,用于设置当前版本的存储过程的语法如下:

EXEC sde.set_current_version '<version_name>'

对于 dbo 方案地理数据库,存储过程由 dbo 所有,因此语法如下:

EXEC dbo.set_current_version '<version_name>'

如果需要更改为其他版本,可以再次调用此过程。每当工作空间刷新时都可调用此过程,以便将版本化表的当前状态返回到调用应用程序。

如果版本设置为 DEFAULT,则将缓存当前状态,所以您只会看到 DEFAULT 版本状态。如果根本未设置版本,则将返回 DEFAULT 版本的动态视图。因此,您会在编辑时看到 DEFAULT 版本中的更改。

警告警告:

不应将多版本化视图用于访问或修改复杂要素(例如,参与几何网络、拓扑、terrain、地籍结构、网络数据集或关系的要素,或具有特定地理数据库行为的要素)。应使用 ArcGIS 来查看和修改这些类型的要素。

步骤:
  1. 在 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
  2. 打开 Transact SQL 查询窗口并执行 set_current_version 存储过程。
    EXEC sde.set_current_version 'version2'
    注意注意:

    如果未设置当前版本,您将在每次进行查询时看到 DEFAULT 版本的最新状态。如果设置了当前版本,则将对状态进行缓存,而您指定的版本的视图保持不变。

  3. 对多版本化视图发出 SELECT 语句以便从地理数据库中读取版本化数据。
    SELECT owner, site_address, region
    FROM code_mv
    WHERE region = 'b'

相关主题


3/7/2012