6 votos

Restablecer el ID del objeto después de truncar la tabla en SQL Server

Estoy trabajando en un programa para exportar los datos de una vista que contiene un tipo de geometría en Sql Server 2008, para un ArcSDE tabla en otro servidor que también almacena los datos utilizando el tipo de geometría. La base de datos de origen no se está ejecutando de ArcSDE. Esta será una noche de trabajo.

Siguiendo la documentación en el enlace de abajo, yo soy capaz de generar un IDENTIFICADOR de Objeto con cada nueva inserción:

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/in_SQL_Server/006z00000017000000/

Mi problema (si es de hecho un problema) es antes de copiar archivos entre los dos servidores, lo primero que eliminar todos los elementos en la tabla de destino mediante una instrucción SQL:

DELETE FROM target_table_name

Sin embargo, al insertar el primer registro después de la eliminación, el ObjectID comienza en el siguiente valor más alto desde antes, cuando he eliminado de la tabla. Por ejemplo, vamos a asumir que la mayor ObjectID en la mesa antes de que borre fue de 1000. Tras eliminar el contenido de la tabla, y comenzar a cargar los nuevos datos, el nuevo ObjectID de la dbo.i_get_ids procedimiento almacenado devuelve es 1001. Cada carga tiene alrededor de 100.000 registros y ya que este se ejecuta por la noche, el id de objeto puede convertirse en un gran valor con bastante rapidez. Mi pregunta es, hay alguna manera de restablecer el valor? Si yo uso el siguiente código de ArcObjects para truncar la tabla de la ObjectID se restablece a cero:

((ITable)targetTable).DeleteSearchedRows(null);

Sin embargo, si hay una manera de hacer esto sin ArcObjects, sería preferible.

1voto

Swinders Puntos 1042

Puede ejecutar el siguiente comando en SQL Management Studio para "regenerar" la autonumérico:

DBCC CHECKIDENT (target_table_name, RESEED, 1)

http://msdn.microsoft.com/en-us/library/ms176057.aspx

Sin embargo, esto podría estropear ArcSDE (creo que es la base de datos de ArcSDE que se ejecuta). Puede que desee considerar el uso de una clave diferente en lugar de un auto-generados para hacer referencia a los registros (por ejemplo, para seleccionar/actualización/mostrar como un atributo), y dejar el ObjectID solo. Tener enormes valores de esta columna no es un problema en sí mismo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X