[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
내 테이블 이름 Genre
은 Id
, Name
및SortOrder
내가 사용한 코드는 다음과 같습니다.
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