¿Por qué recibo un error al insertar cuando IDENTITY_INSERT
está desactivado?
¿Cómo lo activo correctamente en SQL Server 2008? ¿Es mediante el uso de SQL Server Management Studio?
He ejecutado esta consulta:
SET IDENTITY_INSERT Database. dbo. Baskets ON
Luego recibí el mensaje en la consola que indica que los comandos se completaron con éxito. Sin embargo, cuando ejecuto la aplicación, todavía me da el error que se muestra a continuación:
Cannot insert explicit value for identity column in table 'Baskets' when
IDENTITY_INSERT is set to OFF.
sql
sql-server-2008
Principiante
fuente
fuente
Respuestas:
Vía SQL según MSDN
El mensaje de error completo le dice exactamente qué está mal ...
fuente
Tuve un problema en el que no me permitía insertarlo incluso después de configurar IDENTITY_INSERT ON.
El problema fue que no especifiqué los nombres de columna y por alguna razón no me gustó.
Básicamente, haga todo el INSERT INTO en valores tbl (cols) (vals)
fuente
Importar: debe escribir columnas en la
INSERT
declaraciónNo es correcto.
Es correcto
fuente
Sé que este es un hilo antiguo, pero me topé con esto. Si el usuario está intentando ejecutar inserciones en la columna Identidad después de alguna otra sesión Establecer IDENTITY_INSERT ON, entonces está obligado a obtener el error anterior.
El establecimiento del valor Insertar identidad y los siguientes comandos Insertar DML se ejecutarán en la misma sesión.
Aquí @Beginner estaba configurando Identity Insert ON por separado y luego ejecutaba las inserciones desde su aplicación. Es por eso que obtuvo el siguiente error:
fuente
Esto es probable cuando tiene un campo PRIMARY KEY y está insertando un valor que se está duplicando o tiene el indicador INSERT_IDENTITY activado.
fuente
Parece necesario poner un
SET IDENTITY_INSERT Database.dbo.Baskets ON;
antes de cadaINSERT
lote de envío de SQL .Puede enviar varios
INSERT ... VALUES ...
comandos comenzados con unaSET IDENTITY_INSERT ... ON;
cadena al principio. Simplemente no coloque ningún separador de lotes entre.No sé por qué
SET IDENTITY_INSERT ... ON
deja de funcionar después del bloqueo de envío (por ejemplo:.ExecuteNonQuery()
en C #). Tuve que poner deSET IDENTITY_INSERT ... ON;
nuevo al comienzo de la siguiente cadena de comandos SQL.fuente
Otra opción es donde tiene tablas como 'tipo' o 'estado', por ejemplo, OrderStatus, donde siempre desea controlar el valor de Id, crear la columna Id (Clave primaria) sin que sea una columna de identidad es el primer lugar.
fuente
Debe agregar el comando 'ir' después de configurar la inserción de identidad. Ejemplo:
fuente