我有一个存储过程,该过程在SQL Server 2005数据库上进行批量插入。
当我从某些SQL调用此存储过程时(传递本地格式文件和数据文件的名称),它可以正常工作。每次。

但是,当使用SqlCommand.ExecuteNonQuery从C#.NET 3.5代码调用相同的存储过程时,它会间歇性地工作。

如果失败,则会生成SqlException,说明:


  无法批量加载。格式文件“ c:\ bulkinsert \ MyFile.fmt”中的无效列号


我认为此错误消息不正确。

有没有人遇到过从代码中调用批量插入的类似问题?

谢谢。

最佳答案

您如何进行批量插入?通常,问题(在这种情况下)是“ c:\”是服务器的“ c:\”还是客户端的“ c:\”。

然而。从C#代码开始,最简单的方法是使用SqlBulkCopy。此类提供了从托管代码直接访问大容量插入功能的能力,包括映射(尽管我从不理会它们)。

如果文件类似于csv / tsv /类似文件,则强烈建议CsvReader。这提供了IDataReader最有效使用的WriteToServer接口。

10-08 16:51