Editar datos versionados en SQL Server con vistas multiversionadas y SQL

Puede editar datos versionados en una geodatabase mediante la edición de vistas multiversionadas creadas sobre los datos.

Existen varios procedimientos almacenados instalados con ArcSDE que lo ayudan a trabajar con vistas multiversionadas. Estos componentes y sus descripciones son los siguientes:

Procedimiento almacenado

Propósito

Sintaxis y descripción

create_version

Crear una nueva versión de la geodatabase.

Siempre edite su propia versión aparte; varios editores no pueden editar la misma versión con vistas multiversionadas.

EXEC {dbo | sde}.create_version '<parent_version>', '<child_version>', <name_rule>, <access>, '<description>'

  • <parent_version>: es la versión desde la cual se crea su versión
  • <child_version>: el nombre de la versión que va a crear
  • <name_rule>: indica si el nombre especificado para la versión debería haber sido tomado como dado (2) o debería haberse creado un nombre único cuando se especificó un nombre duplicado (1)
  • <access>: el nivel de permiso de la versión: es 0 para privado (sólo la versión del propietario puede acceder), 1 para público (todos los usuarios pueden acceder), o 2 para protegido (la versión del propietario tiene permisos de lectura/escritura sobre la versión pero alguien más tiene permisos de solo lectura)
  • <description>: una descripción de texto de una versión secundaria

set_current_version

Establece a qué versión de geodatabase accederá.

EXEC {dbo | sde}.set_current_version '<version_name>'

  • <version_name>: la versión que desea editar

edit_version

Inicie y finalice una sesión de edición.

EXEC {dbo | sde}.edit_version '<version_name>',{1 | 2}

Especifique 1 para iniciar la sesión de edición. Especifique 2 para finalizarla.

delete_version

Elimine una versión de la geodatabase.

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

Cuando edita tablas versionadas a través de vistas multiversionadas, los cambios se hacen a las tablas delta y los valores de la fila Id. (Id. de objeto) para los registros nuevos se generan automáticamente. Sin embargo, a diferencia de la edición de datos versionados en una sesión de edición en ArcGIS, no se realiza la conciliación de versión interna con estas modificaciones.

Además, se ubica un bloqueo exclusivo en el estado al que hace referencia la versión cuando inicia una sesión de edición en una vista multiversionada. Por consiguiente, se recomienda especialmente que no se utilicen las vistas multiversionadas para editar la versión DEFAULT o cualquier versión que pueda estar sujeta a ediciones simultáneas o a conciliación por parte de otros usuarios debido a que no se detectarán los conflictos y se bloqueará a los otros usuarios. Por el contrario, cree su propia versión específicamente para la sesión de edición con vista multiversionada.

PrecauciónPrecaución:
  • Las operaciones de administración de versiones, como la conciliación, la resolución de conflictos y la publicación, deben realizarse con el software de ArcGIS. La administración inadecuada de versiones puede dañar las geodatabases cuando se trabaje con vistas.
  • Nunca utilice herramientas de un sistema de administración de bases de datos (DBMS) para actualizar algún campo de Id. de fila (Id. de objeto) que ArcSDE mantenga en la base de datos. Estos campos de Id. de objeto se ubican en las geodatabases, son administrados por estas y, por lo tanto, no deben alterarse con SQL.
  • Nunca edite la versión DEFAULT de la geodatabase con SQL. Al iniciar una sesión de edición en una versión se obtiene un bloqueo exclusivo en el estado al que la versión hace referencia. Si bloquea la versión DEFAULT, no permite que los usuarios de ArcGIS se conecten a la geodatabase.

Los siguientes pasos lo guían para crear una vista multiversionada, para crear una versión en la cual realizar modificaciones, establecer la versión para editar, comenzar una nueva edición, realizar algunas modificaciones a través de la vista multiversionada, detener la sesión de edición, asignar las modificaciones a la base de datos y eliminar la versión creada para las modificaciones. En los ejemplos, la vista multiversionada creada para realizar las modificaciones sobre la tabla es code_mv, y la versión creada y usada para las modificaciones es mvedits.

SugerenciaSugerencia:

recuerde que el dataset que edite a través de una vista multiversionada debe haber sido registrado como versionado.

Pasos:
  1. Ejecute en una ventana de comando de MS-DOS la utilidad sdetable para crear una vista multiversionada.
    sdetable –o create_mv_view –T code_mv –t code_enf  –i sde:sqlserver:myserver\ssinst –D code –u sarja –p not4u
  2. Puede usar el procedimiento create_version para crear una versión en la cual realizar las modificaciones.
    EXEC sde.create_version 'sde.DEFAULT', 'version2', 1, 2, 'version for my mv edits'
  3. Abra una ventana de consulta de Transact SQL y ejecute el procedimiento almacenado set_current_version.
    EXEC sde.set_current_version 'version2'
    NotaNota:

    Si no configura la versión actual, verá el último estado de la versión DEFAULT cada vez que realice una consulta. Si configura la versión actual, el estado se almacena en la memoria caché y la vista de la versión que especificó permanece estática.

  4. Inicie una sesión de edición mediante la ejecución del procedimiento almacenado edit_version y especifique 1.
    EXEC sde.edit_version 'version2', 1

    El número 1 indica que se debe iniciar una sesión de edición.

  5. Lleve a cabo la primera modificación en la vista multiversionada con SQL.

    En este ejemplo se actualiza un registro existente.

    UPDATE code_mv  SET propowner = 'C. Industry'  WHERE vid = 2233
  6. Lleve a cabo la siguiente modificación en la vista multiversionada con SQL.

    En este ejemplo se inserta un registro en la tabla.

    INSERT INTO code_mv  (codenum, propowner)  VALUES (456, 'Anjo Badsu')
    SugerenciaSugerencia:

    En la declaración INSERT, no se especifica ningún valor de Id. de objeto, la vista multiversionada automáticamente obtiene el próximo Id. de objeto disponible y lo inserta para la fila.

    Aunque es posible versionar la tabla que ha sido registrada solamente con ArcSDE y que tiene una columna de Id. de objeto que mantiene el usuario, no es un procedimiento recomendado. Si de igual forma lo hace, debe proporcionar un Id. de objeto con las declaraciones INSERT; la vista multiversionada no puede generar un valor por usted.

  7. Detenga la sesión de edición mediante la ejecución del procedimiento almacenado edit_version, pero esta vez, especifique 2.
    EXEC sde.edit_version 'version2', 2

    El número 2 indica que se debe finalizar la sesión de edición.

  8. Cuando finaliza todas las modificaciones, concílielas y publíquelas por medio de ArcGIS Desktop, y después elimine la versión de geodatabase que creó en el paso 2. Si decide que no quiere conservar los cambios, puede eliminar la versión que creó en el paso 2 sin conciliar y publicar las modificaciones.
    EXEC sde.delete_version 'version2'

Temas relacionados


3/6/2012