이상한 문제가 발생하며이를 파악하는 데 도움이 필요합니다.Sql Server 2005 ID 열의 기본 키 위반
모든 응용 프로그램 데이터 열 외에 ID 열 (null이 아닌 int, Identity, 1에서 시작, 1 씩 증가 함)로 정의 된 데이터베이스가 있습니다. 테이블의 기본 키는 ID 열이며 다른 구성 요소는 없습니다.
응용 프로그램에서 동일한 데이터를 여러 번 제출해야하므로 "기본 기본 키"로 사용할 수있는 데이터 집합이 없습니다.
I가 (DB를 소유자로 직접 서버에 로그인 이외의) 테이블에 새 레코드를 추가 할 수있는 유일한 방법입니다 저장 프로 시저,
QA 오늘 아침 응용 프로그램을 테스트하는 동안, 그들은에 데이터베이스에 새 레코드를 입력하고 (응용 프로그램을 의도 한대로 사용하고 지난 2 주 동안 수행 한 것처럼)이 테이블에서 기본 키 위반이 발생했습니다.
이것은 약 10 년 동안 기본 키를 사용했던 것과 같은 방식으로이 작업을 한 번도 해본 적이 없습니다.
해결 방법에 대한 의견이 있으십니까? 아니면 오랫동안 한 번 나타 났던 우주 광선 결함 중 하나입니다.
조언 해 주셔서 감사합니다. 자세한 내용
에게 스키마의 단순화 된 버전을 제공하기 위해, 동부 서머 타임 오후 1시 15분 6 월 12에서 편집
이 ...
CREATE TABLE [dbo].[tbl_Queries](
[QueryID] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [varchar](50) NOT NULL,
[LastName] [varchar](50) NOT NULL,
[Address] [varchar](150) NOT NULL,
[Apt#] [varchar](10) NOT NULL
... <12 other columns deleted for brevity>
[VersionCode] [timestamp] NOT NULL,
CONSTRAINT [PK_tbl_Queries] PRIMARY KEY CLUSTERED
(
[QueryID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
(또한 기본값 문을 제거) 나이젤
저장 프로 시저는 다음과 같습니다.
insert into dbo.tbl_Queries
( FirstName,
LastName,
[Address],
[Apt#]...) values
( @firstName,
@lastName,
@address,
isnull(@apt, ''), ...)
IDENTITY, @ scope_identity 또는 이와 유사한 것을 사용하지 않는 ID 열도 보지 않습니다. 단지 파일이며 잊어 버립니다.
신원 값이 재설정되지 않았으며 아무도 직접 데이터베이스 액세스를 사용하여 값을 입력 할 수 없다고 확신합니다. ID 삽입이 사용되는이 프로젝트의 유일한 시간은 초기 데이터베이스 배포에서 조회 테이블에 특정 값을 설정하는 것입니다.
QA 팀은 오류가 발생하자마자 다시 시도하고 쿼리를 성공적으로 제출할 수 있었으며 그 이후로이를 재현하려고 시도했지만 지금까지 성공하지 못했습니다.
정말 아이디어에 감사드립니다.
경험
에 따라
흠 ... 혹시 당신은 위생 테이블 스키마 및/또는 문제가되는 삽입 문을 붙여 넣을 수 있습니까? – ristonj
여전히 새 레코드를 추가 할 수 없습니까 아니면 한 번만 발생 했습니까? –
나이젤 아래 내 대답을 확인하십시오 ... – Eric