when used update specified quitar only off identity_insert ejemplo columna column cambiar and sql sql-server tsql

sql - used - IDENTITY_INSERT está configurado en OFF-¿Cómo activarlo?



set identity_insert ejemplo (7)

Tengo una base de datos de archivos borrados que almacena el ID del archivo que se eliminó, quiero que el administrador pueda restaurar el archivo (así como también el mismo ID para vincular archivos). No quiero quitar identity_insert de toda la tabla, ya que el incremento en uno funciona muy bien. En mi inserción al procedimiento de almacenamiento TBL_Content tengo algo como esto

set ANSI_NULLS ON set QUOTED_IDENTIFIER ON SET IDENTITY_INSERT tbl_content ON GO ALTER procedure [dbo].[spInsertDeletedIntoTBLContent] @ContentID int, ...insert command... SET IDENTITY_INSERT tbl_content OFF

Pero sigo recibiendo el mismo error:

No se puede insertar un valor explícito para la columna de identidad en la tabla ''TBL_Content'' cuando IDENTITY_INSERT está establecido en OFF.

¿Alguna ayuda?


¿Debería establecer en su lugar la inserción de identidad dentro del procedimiento almacenado? Parece que lo está configurando solo al cambiar el procedimiento almacenado, no cuando lo está llamando realmente. Tratar:

ALTER procedure [dbo].[spInsertDeletedIntoTBLContent] @ContentID int, SET IDENTITY_INSERT tbl_content ON ...insert command... SET IDENTITY_INSERT tbl_content OFF GO


¿No deberías configurar identity_Insert ON, insertar los registros y luego volver a desactivarlo?

Me gusta esto:

set ANSI_NULLS ON set QUOTED_IDENTIFIER ON SET IDENTITY_INSERT tbl_content ON GO ALTER procedure [dbo].[spInsertDeletedIntoTBLContent] @ContentID int, SET IDENTITY_INSERT tbl_content ON ...insert command... SET IDENTITY_INSERT tbl_content OFF


Añadir set off también

SET IDENTITY_INSERT Genre ON INSERT INTO Genre(Id, Name, SortOrder)VALUES (12,''Moody Blues'', 20) SET IDENTITY_INSERT Genre OFF


Agregue esta línea encima de su consulta

SET IDENTITY_INSERT tbl_content ON


Creo que debe hacerse en un solo lote de consultas. Básicamente, las declaraciones GO están dividiendo tus comandos en varios lotes y eso está causando el problema. Cambiarlo a esto:

SET IDENTITY_INSERT tbl_content ON /* GO */ ...insert command... SET IDENTITY_INSERT tbl_content OFF GO



Recordatorio

SQL Server solo permite que una tabla tenga la propiedad IDENTITY_INSERT establecida en ON.

Esto no funciona:

SET IDENTITY_INSERT TableA ON SET IDENTITY_INSERT TableB ON ... INSERT ON TableA ... ... INSERT ON TableB ... SET IDENTITY_INSERT TableA OFF SET IDENTITY_INSERT TableB OFF

En lugar:

SET IDENTITY_INSERT TableA ON ... INSERT ON TableA ... SET IDENTITY_INSERT TableA OFF SET IDENTITY_INSERT TableB ON ... INSERT ON TableB ... SET IDENTITY_INSERT TableB OFF