Я использую VS 2010 Premium RTMRel (10.0.30319.1) и SS2008.У меня есть база данных, которая создает AOK и сценарий после развертывания, который загружает некоторые примеры данных.Когда я собираю и внедряю эту БД через интерфейс VS, она работает просто отлично.Когда я пытаюсь развернуть его через vsdbcmd, происходит сбой в массиве данных с такими ошибками:
** * SQL01268 C: \ source \ mydatabase.sql (5197,0) .Net SqlClient DataПоставщик: Сообщение 2627, уровень 14, состояние 1, строка 227 Нарушение ограничения PRIMARY KEY 'pk_customers'.Невозможно вставить дубликат ключа в объект 'dbo.customers'. **
В демонстрационных целях я пытаюсь заполнить конкретную запись в таблице клиентов и переопределяю IDENTITYсвойство столбца id для установки значения по моему выбору.Соответствующие строки в моем сценарии после развертывания таковы:
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
Кто-нибудь знает, почему я могу переопределить столбец IDENTITY (используя SET IDENTITY INSERT ON) через пользовательский интерфейс, но не через командную строку?
И нет, невозможно, чтобы в таблице клиентов уже была запись с id = 10001. Других записей (или вставок) в таблице нет вообще.
IПолагайте, что часть сообщения об ошибке «дубликат ключа в объекте» является абсолютно неверной, и что он возражает против того, чтобы я пытался поместить свое собственное значение в столбец PK.,Если я изменю значения по умолчанию и установлю IGNORE_DUP_KEY = ON, то развертывание командной строки работает.Но я не хочу этого делать.
Любые идеи или предложения приветствуются.