VS 2010 Premium RTMRel (10.0.30319.1) 및 SS2008을 사용하고 있습니다. AOK를 구축하고 일부 샘플 데이터를로드하는 사후 배치 스크립트가있는 데이터베이스가 있습니다. VS UI를 통해이 DB를 빌드하고 배포하면 정상적으로 작동합니다. vsdbcmd를 통해 배포하려고하면 다음과 같은 오류가있는 데이터 채우기가 실패합니다.기본 키 제약 조건 위반, vsdbcmd를 통해 DB를 배포 할 때만
** * SQL01268 C : \ source \ mydatabase.sql (5197,0) .Net SqlClient 데이터 공급자 : Msg 2627 , 수준 14, 상태 1, 줄 227 PRIMARY KEY 제약 조건 'pk_customers'위반. 'dbo.customers'개체에 중복 키를 삽입 할 수 없습니다. 데모 목적을 위해 * *
, 나는 고객 테이블에 특정 레코드를 채우기 위해 노력하고 내 선택의 값을 설정하기 위해 id 컬럼의 IDENTITY 속성을 무시하고있다. 내 배포 후 스크립트의 관련 라인은 다음과 같습니다
SET IDENTITY_INSERT [dbo].[customers] ON
INSERT INTO [dbo].[customers] ([id], [name], [notes]) VALUES (10001, N'ABC Co', NULL)
SET IDENTITY_INSERT [dbo].[customers] OFF
나는 UI를 통해 (SET IDENTITY INSERT ON을 사용하여)에 IDENTITY 열을 무시할 수 있지만 명령 행을 통해 할 수있는 이유
사람이 알고 있나요?
아니요. id = 10001 인 고객 테이블에 이미 레코드가있을 가능성은 없습니다. 테이블에 다른 레코드 (또는 삽입)가 전혀 없습니다.
"개체의 중복 키"부분이 완전히 잘못되어 PK 열에 자신의 값을 넣으 려하지 않는다고 생각합니다.
PK 제약 조건에는 표준 기본값이 있습니다. 기본값을 변경하고 IGNORE_DUP_KEY = ON으로 설정하면 명령 행 배포가 작동합니다. 그러나 나는 그것을하고 싶지 않습니다.
감사 인사 또는 제안 사항.