IDENTITY_INSERT가 OFF로 설정되어 있습니다. 사용 설정 방법은 무엇입니까?


112

삭제 된 파일의 ID를 저장하는 삭제 된 파일 보관 데이터베이스가 있습니다. 관리자가 파일을 복원 할 수 있기를 원합니다 (파일 연결을위한 동일한 ID 포함). 하나의 증가가 훌륭하게 작동하기 때문에 전체 테이블에서 identity_insert를 제거하고 싶지 않습니다. 내 삽입 TBL_Content저장 절차에 다음과 같은 것이 있습니다.

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

하지만 같은 오류가 계속 발생합니다.

IDENTITY_INSERT가 OFF로 설정된 경우 'TBL_Content'테이블의 ID 열에 대한 명시 적 값을 삽입 할 수 없습니다.

도움이 필요하세요?

답변:


174

대신 저장 프로 시저 내에서 ID 삽입을 설정해야합니까? 실제로 호출 할 때가 아니라 저장 프로 시저를 변경할 때만 on으로 설정 한 것 같습니다. 시험:

ALTER procedure [dbo].[spInsertDeletedIntoTBLContent]
@ContentID int, 

SET IDENTITY_INSERT tbl_content ON

...insert command...

SET IDENTITY_INSERT tbl_content OFF
GO

16

identity_Insert를 ON으로 설정하고 레코드를 삽입 한 다음 다시 꺼야하지 않습니까?

이렇게 :

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

14

단일 쿼리 일괄 처리로 수행해야한다고 생각합니다. 기본적으로 GO 문은 명령을 여러 배치로 나누고 이로 인해 문제가 발생합니다. 다음과 같이 변경하십시오.

SET IDENTITY_INSERT tbl_content ON
/* GO */

...insert command...

SET IDENTITY_INSERT tbl_content OFF
GO

1
맞아. 이것이 포인트입니다! 삽입을위한 다음 명령 일괄 처리는 SET IDENTITY_INSERT tbl_content ON으로 시작해야합니다. 다시 명령하십시오.
Jettero 2017 년

9

조언

SQL Server에서는 하나의 테이블에만 IDENTITY_INSERT 속성을 ON으로 설정할 수 있습니다.

작동하지 않습니다.

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

대신 :

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


4

이 줄을 쿼리 위에 추가하십시오.

SET IDENTITY_INSERT tbl_content ON

2

또한 출발 추가

 SET IDENTITY_INSERT Genre ON

    INSERT INTO Genre(Id, Name, SortOrder)VALUES (12,'Moody Blues', 20) 

    SET IDENTITY_INSERT Genre  OFF
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.