私は奇妙な問題に遭遇しており、それを理解しようとするいくつかの助けが必要です。Sql Server 2005プライマリキー違反のID列
私はすべてのアプリケーションデータ列に加えて、ID列(nullではないint、Identity、1から始まり、1ずつ増加する)を持つデータベースを持っています。表の主キーはID列であり、他のコンポーネントはありません。
アプリケーションは同じデータの複数の提出を許可する必要があるため、「自然な主キー」として使用できるデータセットはありません。
QAは、彼らが、今朝のアプリケーションをテストしましたが、私は(直接デシベル所有者としてサーバにログイン以外の)テーブルに新しいレコードを追加する唯一の方法であるストアドプロシージャ、
を持っていますデータベースに新しいレコードを入力します(意図したとおりにアプリケーションを使用し、最後の2週間は実行しています)、このテーブルで主キー違反が発生しました。
これは私が約10年前に主キーをやっていたのと同じように、これを一度も実行したことはありません。
これを修正する方法についてのご意見はありますか?それとも、長い間に一度現れる宇宙線の不具合の1つです。
アドバイスをいただきありがとうございます。
ナイジェルより多くの情報をスキーマの簡易版を
を与えるために、13:15 EDT 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などは使用しません。IDENTITY、@ scope_identityなどは使用しません。単なるファイルであり、忘れてしまいます。
私は、アイデンティティ値がリセットされておらず、ほかに誰も値を入力するために直接データベースアクセスを使用していないと確信しています。このプロジェクトでアイデンティティ挿入が使用される唯一の時間は、ルックアップテーブルに特定の値を設定するための初期データベース展開です。
QAチームは、エラーが発生した直後に再試行し、クエリを正常に提出できました。それ以来、これを再生しようとしていて、これまで成功していませんでした。
私は本当にアイデアをいただきありがとうございます。経験
に基づいて
Hmmm ...万一、サニタイズされた表スキーマおよび/または問題の挿入文を貼り付けることができますか? – ristonj
まだ新しいレコードを追加できませんか、それとも1回だけ発生しましたか? –
ナイジェルの下で私の答えをチェックしてください... – Eric