0

Наша команда должна вставить в нашу базу данных SQL Server 2008 жестокий объем данных. Мы ищем хорошее решение. Теперь мы придумали один, но я сомневаюсь в этом, просто потому, что он не чувствует себя хорошо. Поэтому я спрашиваю, если это похоже на хорошее решение. Дополнительный вызов заключается в том, что это одноранговая реплицированная база данных на 4 серверах! :)Вкладыши для массовой загрузки с DBCC CheckIdent

Представьте, что мы имеем 1 миллион строк для вставки

  1. Начала транзакции
  2. Увеличения текущего значения на идентификационной таблице 1 млн
  3. Иметь DataSet/DataTable готовы с 1 миллион строк и правильные идентификаторы
  4. BulkCopy данные в базу данных
  5. фиксации транзакции

Является ли это хорошим решением, мы можем столкнуться с проблемами параллелизма, иметь слишком большие транзакции и т. Д.

ответ

0

У вас будут проблемы (насколько я могу видеть, так что могут быть вещи, которые я пропускаю!) если база данных находится в сети, и пользователи могут вставлять строки в эту таблицу. Увеличение значения идентификатора для новых строк на метауровне просто означает, что следующая строка, вставленная системой, будет использовать это число, поэтому, если вы столкнетесь с ней на 1 миллион, это означает, что вы зарезервировали эти номера спереди.

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

Если это разовое дело, это может сработать. Если вы планируете регулярно это делать, я бы посмотрел на более высокоуровневую систему миграции, в которой вы переносите данные на новые значения идентификации или используете guid с NEWSEQUENTIALID(), чтобы получить надлежащие проверенные индексы, а также уникальные, переносимые идентификаторы ,