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プロパティをオーバーライドしています。私の展開後のスクリプト内の関連する行がこれらです:私はUI経由ではなく、コマンドラインを介して(SET IDENTITY INSERT ONを使用して)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
誰でも知っていますか?
いいえ、id = 10001のcustomersテーブルにはすでにレコードが存在する可能性はありません。テーブルには他のレコード(または挿入)はまったくありません。
私は、エラーメッセージの「オブジェクト内の重複キー」の部分はまったく間違っていると思うし、自分自身の値をPK列に入れようとしているとは反対しています。
PK制約には標準のデフォルト値があります。デフォルトを変更してIGNORE_DUP_KEY = ONに設定すると、コマンドラインdeployが動作します。しかし、私はそれをする必要はありません。
洞察力や提案が高く評価されました。