C # SqlBulkcopy вставка ведет себя по-разному при обновлении SQL Server с 2005 по 2014 - PullRequest
0 голосов
/ 21 мая 2019

У меня есть таблица Employee с этими столбцами:

  1. ID int (первичный ключ, с автоматическим приращением на 1)
  2. Employee_Name
  3. Зарплата
  4. Joining_Date (кластеризованный индекс с порядком ASC)

Теперь, когда мы сохраняем данные, используя SqlBulkCopy из нашего приложения C #, в базу данных SQL Server 2005, он вставляет строки в одно и то жепорядок строк данных.

Но когда мы сохраняем эти данные в SQL Server 2014, порядок строк изменяется в соответствии с столбцом кластерного индекса.

Код C #:

DataTable dtEmployee = new DataTable();

//Inserting employee records in datatable

bulkCopy.WriteToServer(dtEmployee);

Укажитеповеденческие изменения, если таковые имеются, и как их решить.Также приветствуются различные подходы к проектированию

У нас есть два варианта:

  1. Игнорировать Bulkcopy и вставлять строки один за другим.Это имеет проблему в соединении, и это ломается из-за проблем с сетью, приводящих к откату

  2. Сохранение данных в таблице с помощью массового копирования, имеющего столбец отметки времени.Таким образом, мы можем запустить задание, чтобы заполнить данные в итоговой таблице на основе метки времени для какого-либо задания.Это менее приемлемо для текущей системы.

Это Windows Server 2008 с SQL Server 2005 и SQL Server 2014

1 Ответ

2 голосов
/ 21 мая 2019

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

  1. Добавьте числовое поле в вашу таблицу данных.
  2. Поместите номер строки в это поле.
  3. Добавьте числовое поле для номера строки в таблицу SQL
  4. Выполните объемную копию
  5. Используйте строкучисловое поле, чтобы определить, в каком порядке исходные данные были в
...