сохранение значений спецификации идентификатора при экспорте между базами данных sql сервера (sql2005 / 8) - PullRequest
1 голос
/ 26 января 2011

У меня есть веб-хост с базой данных SQL-сервера, и я хочу переместить свою БД на свое предприятие.У меня нет доступа к использованию восстановления / резервного копирования, но я успешно использовал функцию «экспорт».При этом я указал исходные и целевые экземпляры БД, и все они переместились без затруднений.

Однако теперь я перенес сайт, первая попытка записи строки в таблицу выдает эту ошибку:

Cannot insert the value NULL into column 'eventID', table   'advanced_PT.dbo.tblEvents';     
column does not allow nulls. INSERT fails.
  The statement has been terminated.

Когда я смотрю в БД, первый столбец (eventID) заполняется его значениями, но спецификация идентификации отключена.Попытка включить его вызывает желание воссоздать таблицу, которая не годится, поскольку в ней уже есть данные.

Есть ли способ экспортировать и сохранить это?Я нашел ссылку на SET_IDENTITY_INSERT, но это не похоже на хитрость.

(моя версия ent manager 2008, у хоста 2005)

Спасибо!

Mark

1 Ответ

5 голосов
/ 27 января 2011

Просто чтобы закрыть это, после различных проб и ошибок я обнаружил, что лучший метод выглядит так:

Щелкните правой кнопкой мыши БД -> Задачи-> Создать сценарии

В 'установить параметры скриптов'

  • скажем, генерировать новое окно запроса (я думаю, что если оно становится большим, нужно перейти в файл)
  • Нажмите кнопку «Дополнительно» и измените следующие значения по умолчанию (не сохраняет эти настройки, к сожалению)
    • Создать скрипт для зависимых объектов: true
    • Включить, если НЕ СУЩЕСТВУЕТ: true (я полагаю, что это просто ставит 'если', поэтому, если он пытается отбросить таблицу, которой еще нет, ошибки не возникают)
    • Включить имена системных ограничений: True (я думаю)
    • Скрипт DROP and CREATE - зависит от того, существует ли БД. Если вы говорите «создать», я думаю, что на самом деле он может попытаться создать саму БД, а не только таблицы, поэтому, если вы создали БД в plesk, лучше всего использовать функцию «ЕСЛИ НЕ СУЩЕСТВУЕТ» и сказать «УБРАТЬ и СОЗДАТЬ» в это поле.
    • Версия скрипта для сервера: при необходимости измените
    • Типы данных для сценария: ОЧЕНЬ ВАЖНО - скажите «Схема и данные», иначе вы просто получите пустые таблицы
    • Индексы сценариев / полнотекстовые индексы сценариев: ИСТИНА - если вы этого не сделаете, спецификация идентичности будет утеряна

Затем скрипт появится в окне вашего запроса. Перейдите к целевой БД, щелкните правой кнопкой мыши, скажите «новый запрос», вставьте его и выполните.

Может случиться так, что если данные становятся большими, лучше создать «только схему» с помощью вышеизложенного, а затем переместить сами данные с помощью мастеров импорта / экспорта. Хотя не пробовал этого.

Надеюсь, что это полезно для других ... :) Если у кого-то есть способ получше, пожалуйста, напишите мне!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...