C# SqlBulkcopy insert 在更新 SQL Server 从 2005 到 2014 时表现不同

C# SqlBulkcopy insert behaving differently on updating SQL Server from 2005 to 2014

我有一个 table Employee 包含这些列:

  1. ID int(主键,自增1)
  2. Employee_Name
  3. 工资
  4. Joining_Date(ASC 顺序的聚簇索引)

现在,当我们使用 SqlBulkCopy 从我们的 C# 应用程序将数据保存到 SQL Server 2005 数据库时,它会按照与 Datatable 行相同的顺序插入行。

但是当我们将该数据保存到 SQL Server 2014 时,行的顺序会根据聚集索引列发生变化。

C#代码:

DataTable dtEmployee = new DataTable();

//Inserting employee records in datatable

bulkCopy.WriteToServer(dtEmployee);

请提供行为变化(如果有)以及解决方法。也欢迎多种设计方法

我们有两个选择 -

  1. 忽略批量复制并逐行插入。这在连接中存在问题,并且由于网络问题导致回滚

  2. 通过具有时间戳列的批量复制将数据存储在 table 中。这样我们就可以 运行 一个作业根据某个作业的时间戳在最终 table 中填充数据。根据当前系统,这较少接受table。

这是 Windows Server 2008,SQL Server 2005 和 SQL Server 2014

要确保 SQL 大容量复制操作会给您留下可以按特定顺序检索的记录,唯一的方法是为每一行添加一个行号。如果您已经在 datatable 中订购了数据,请将另一列添加到您的 SQL table 和 datatable 用于 "insert row number" 或类似的东西.

  1. 向您的数据添加一个数字字段table。
  2. 在该字段中输入行号。
  3. 将行号的数字字段添加到您的 SQL table
  4. 执行批量复制
  5. 使用行号字段确定原始数据的顺序