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

삭제 된 파일의 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 열에 대한 명시 적 값을 삽입 할 수 없습니다.

도움이 필요하세요?



답변

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

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

SET IDENTITY_INSERT tbl_content ON

...insert command...

SET IDENTITY_INSERT tbl_content OFF
GO


답변

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


답변

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

SET IDENTITY_INSERT tbl_content ON
/* GO */

...insert command...

SET IDENTITY_INSERT tbl_content OFF
GO


답변

조언

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


답변

참조 : http://technet.microsoft.com/en-us/library/aa259221%28v=sql.80%29.aspx

내 테이블 이름 GenreId, NameSortOrder

내가 사용한 코드는 다음과 같습니다.

SET IDENTITY_INSERT Genre ON

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


답변

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

SET IDENTITY_INSERT tbl_content ON


답변

또한 출발 추가

 SET IDENTITY_INSERT Genre ON

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

    SET IDENTITY_INSERT Genre  OFF