Cómo insertar un DataTable con una clave existente en una tabla de SQL Server

database datatable sqlbulkcopy sql-server vb.net

Pregunta

Estoy trabajando con VB.NET. Tengo una tabla de datos llamada "PREGUNTA", que contiene 3 campos:

  • QuestionNumber (clave entera única)
  • QuestionText
  • Tipo de pregunta

En mi base de datos de SQL Server creé una tabla llamada "PREGUNTA" con los mismos campos. QuestionNumber se define como clave única de entero, incremento automático

Ahora, cuando hago una copia masiva para insertar el DataTable en el SQL Server, la base de datos sobrescribe mi QuestionNumber del DataTable y genera otros nuevos (a partir de 1 incremento 1).

¿Cómo tengo que cambiar la configuración de mi base de datos para que los QuestionNumbers originales se copien en la base de datos?

Respuesta aceptada

cuando solo se usa la inserción intente:

SET IDENTITY_INSERT [your table] ON
INSERT INTO [your table] (identityCol, col1,...) VALUES (identityCol, col1,...)
SET IDENTITY_INSERT [your table] OFF

cuando necesite realizar una copia masiva de datos, agregue un parámetro / cambio / sugerencia especial al comando, estos se detallan aquí:

Mantener los valores de identidad cuando se importan datos a granel


Respuesta popular

Busque la inserción de identidad. Lo enciendes. Actualiza la tabla, luego apágala de nuevo.

SET IDENTITY_INSERT table ON

Tenga en cuenta que solo puede tenerlo en una mesa a la vez. Si lo activa para una tabla diferente, se desactiva en la última tabla.

Si inserta un valor que es más alto que el valor existente más grande, se volverá a colocar en ese valor, de modo que todos los valores nuevos sean mayores.

De nuevo, no te olvides de apagarlo:

SET IDENTITY_INSERT table OFF

Si está haciendo literalmente BULGAR INSERTAR, no olvide el calificador KEEPIDENTITY, que le indica al servidor que NO ignore sus valores de identidad; de lo contrario, ignorará sus valores de identidad y generará otros nuevos para la columna de identidad.

Mantener los valores de identidad cuando se importan datos a granel



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué