Editar datos de una geodatabase no versionada en SQL Server con SQL

Puede utilizar SQL para actualizar, insertar datos y eliminar datos de tablas no versionadas en la geodatabase si no participan en el comportamiento de la geodatabase. Consulte ¿Qué tipo de datos puede editarse con SQL? para obtener información sobre los tipos de datos y comportamiento de la base de datos que no puede editar con SQL.

Todos los datos que se registran con la geodatabase tiene una columna (fila Id.) de Id. de objeto mantenida por el sistema, única y que no es nula. Cuando utiliza SQL para insertar registros en las tablas no versionadas en la geodatabase, debe proporcionar un valor único para el Id. de objeto.

Para obtener esta información, haga una consulta a la tabla sde_table_registry del sistema de ArcSDE para obtener el Id. de registro de la tabla en la cual desea insertar un registro. Una vez que tiene el Id. de registro, puede identificar la tabla i correspondiente de la tabla porque las tablas i están asociadas con la tabla de negocios a través del Id. de registro. La tabla i se almacena en el esquema del usuario que es propietario de la tabla correspondiente.

Ejecute el procedimiento i<registration_id>_get_id para obtener el próximo valor de Id. de objeto disponible. Luego, use ese valor en su declaración INSERT para completar la columna de Id. de objeto para el registro.

Pasos:
  1. Inicie sesión en un editor de SQL, como el de Microsoft SQL Server Management Studio.

    Asegúrese de iniciar sesión en la base de datos como un usuario que tiene permiso para editar los datos.

  2. Haga una consulta en la tabla del sistema SDE_table_registry para determinar el Id. de registro de la tabla de negocios en la cual quiere insertar un registro.

    En este ejemplo, la tabla de negocios es farmland y el propietario de la tabla es gisdata4.

    SELECT registration_id FROM dbo.SDE_table_registry WHERE table_name = 'farmland' and owner = 'gisdata4';  registration_id       71

    El Id. de registro para la tabla de negocios gisdata4.farmland es 71.

  3. Utilice el procedimiento i71_get_id para obtener un valor para la columna de Id. de objeto.
    DECLARE @id as integer DECLARE @num_ids as integer EXEC dbo.i71_get_ids 2, 1, @id output, @num_ids output; 

    El 2 después del procedimiento es una constante que indica que desea devolver un Id. de objeto. No utilice ningún otro valor en este lugar. El 1 indica que desea un Id. de objeto de la tabla i71. Sólo necesita una Id. de objeto porque está actualizando sólo un registro.

  4. Utilice el valor devuelto de la declaración anterior para completar la columna de Id. de objeto del registro que inserte.

    En este ejemplo, fid es la columna de Id. de objeto.

    INSERT INTO gisdata4.farmland (fid,crop,shape) VALUES ( @id, 'oats', geography::STGeomFromText('POLYGON((-111.85897004 33.25178949, -111.86899617 33.25065270, -111.86887014 33.25062350, -111.85884555 33.25176951, -111.85897004 33.25178949))', 4267));

Temas relacionados


7/11/2012