我有一个带有这些列的表Employee
:
现在,当我们使用SqlBulkCopy
将数据从C#应用程序保存到SQL Server 2005数据库中时,它会以与数据表行相同的顺序插入行。
但是当我们将数据保存到SQL Server 2014中时,行的顺序会根据聚簇索引列而改变。
C#代码:
DataTable dtEmployee = new DataTable();
//Inserting employee records in datatable
bulkCopy.WriteToServer(dtEmployee);
请提供行为更改(如有)以及解决方法。也欢迎采用多种设计方法
我们有两个选择-
忽略批量复制并一一插入行。连接中出现问题,由于网络问题导致回滚而中断
通过具有timestamp列的bulkcopy将数据存储在表中。这样,我们可以运行作业以根据某些作业的时间戳将数据填充到最终表中。根据当前系统,这是不太可接受的。
这是带有SQL Server 2005和SQL Server 2014的Windows Server 2008
答案 0 :(得分:2)
确保SQL批量复制操作将使您具有可以按特定顺序检索的记录的唯一方法是为每行包括一个行号。如果您已经在数据表中对数据进行了排序,则将另一列添加到SQL表中,并在数据表中添加“插入行号”或类似的内容。