Мастер импорта и экспорта со столбцом идентификаторов


Я хочу переместить данные из одной БД в другую, сохраняя при этом значения столбца идентификаторов в старой БД. Когда я запускаю мастер, я получаю ошибку проверки "ошибка вставки в столбец только для чтения "ChannelID".

где ChannelID-это столбец идентификаторов в этой таблице. Как я могу переопределить функцию идентификации, чтобы иметь возможность импортировать данные?

7 54

7 ответов:

вам нужно будет включить Identity insert. При нажатии кнопки Изменить сопоставления устанавливается флажок.

ответ Byte56 правильный-проверьте "включить Identity insert" на экране редактирования сопоставлений. Я просто хотел отметить, что список" выбор исходных таблиц и представлений " поддерживает множественный выбор, поэтому вы можете удерживать Shift или Ctrl, чтобы выбрать несколько таблиц в списке.

вы должны использовать SET IDENTITY INSERT ON разрешить вставку значений в столбец идентификаторов

здесь ссылке в MSDN

на РЕДАКТИРОВАТЬ СОПОСТАВЛЕНИЯ СТОЛБЦОВ, клещевой ВКЛЮЧИТЬ ВСТАВКУ ИДЕНТИФИКАТОРОВ. Затем нажмите РЕДАКТИРОВАТЬ SQL.

изменить

[MyID] int NOT NULL,

на

[MyID] int IDENTITY(1,1),

работает в импорте базы данных MS Access. При этом сохраняются данные в поле Autonumber, преобразуемые в столбец идентификаторов.

SQL Server 2008 R2 с помощью SSMS 2008 R2.

простое включение identity в "Редактировать сопоставления" не сохраняет identity=true. Мне нужно вручную отредактировать sql для каждой таблицы и включить свойство IDENTITY в код sql.

пример: добавить MS_IDENT numeric (18,0) IDENTITY NOT NULL,

Я только что обновился до SQL Server Management Studio 2017. Я попытался проверить флажок "Использовать идентификатор" в диалоговом окне редактирования сопоставлений, но это не сработало. При обновлении существующей таблицы мастер не позволяет редактировать SQL. Вместо этого я смог сохранить его в виде пакета на своем жестком диске. Затем я отредактировал файл в блокноте, ища "личность". Конечно же, свойство было установлено в true, что в соответствии с комментариями в самом файле означает, что значение для столбца идентификаторов равно скопировано из источника. Изменение его на false приводит к тому, что значение автоматически генерируется в месте назначения. Надеюсь, это поможет.

Я провел некоторое время, пытаясь найти решение для этого

У меня есть база данных access с 300+ таблицами и с помощью инструмента импорта SSMS2017 я не мог получить его, чтобы сохранить первичный ключ и автоматический номер, без ручного редактирования конфигурации для каждой таблицы.... не хороший..

в конце концов я использовал инструмент, сделанный bullzip, (MS Access to MSSQL) который позволяет мне конвертировать из access в mssql (у них также есть инструмент для доступа к MySQL)

инструмент делает задание для вас, завяните к скрипту, если у вас есть небольшая таблица, или непосредственно к серверу..

все идентификаторы не повреждены, и автономера также находятся там..

работу.