Вкладыши для распечатки в DBCC CheckIdent

batch-processing dbcc sqlbulkcopy sql-server sql-server-2008

Вопрос

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

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

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

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

Популярные ответы

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

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

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



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему