将行批量插入sql server的最快方法

时间:2009-03-13 13:33:51

标签: sql-server sql-server-2008

通过Web服务,远程计算机将发送一组行以插入我们的中央sql服务器。

插入这些行的最佳方法(性能方面)是什么?每次都可以插入50-500行。

我知道我可以进行批量插入或将数据格式化为以这种方式插入的XML,但我之前从未在企业设置中完成此操作。

更新的 使用wcf Web服务(或者可能还不确定)和SQL Server 2008标准。

5 个答案:

答案 0 :(得分:6)

除非你在一台已有10年历史的计算机上运行,​​否则50-500行并不是很多;您可以直接发送SQL语句并将它们直接传送到数据库中并获得出色的性能。假设您信任发送数据的服务,当然: - )

如果性能真的是一个问题,通过bcp文件发送绝对是在数据库中阻塞数据的最快方法。从你的问题来看,你已经知道如何做到这一点。

答案 1 :(得分:5)

仅有50-500条记录不构成“批量插入”。批量插入机制专为大量数据导入而设计,可以立即进行备份。

在Web服务中,我只是将XML传递给SQL服务器。细节将取决于版本。

答案 2 :(得分:3)

这是什么类型的网络服务?

如果是.Net,通常最好的方法是将输入加载到DataTable中,然后使用SqlBulkCopy类将其发送到SQL服务器

答案 3 :(得分:3)

50-500行应该不是问题!没有必要进行性能调整!在您的应用程序中执行正常(准备好的)SQL语句。

不要因复杂性和过度工程而杀死它。

当您应该插入超过250.000行时,您应该考虑缩放!

不要转动约束,你可能会杀死数据库。

答案 4 :(得分:2)

要回显所有其他答案,对于SQL Server,500行不是问题。如果你确实需要插入大量记录,最快的方法是使用一个名为BulkInsert的内置存储过程,

BulkInsert

其中(我相信)是专门为此而设计的SQL Server实用程序的入口点,称为bcp.exe

bcp