快速批量插入行到SQL Server的最快方法

9
通过web服务,远程计算机将发送一组行插入到我们的中央sql服务器中。
从性能角度来看,最好的方法是什么,以插入这些行?每次可能要插入50-500行。
我知道我可以进行批量插入或将数据格式化为XML,然后以那种方式插入,但我以前从未在企业环境中这样做过。
更新: 使用wcf web服务(或者可能是wse,还不确定)和SQL Server 2008标准。

1
指明SQL Server的版本确实会有所不同。 - AnthonyWJones
5个回答

6

除非你的电脑已经十年老旧,否则50-500行并不算很多;你可以直接发送SQL语句,并将它们导入数据库中以获得更好的性能。当然,前提是你信任发送数据的服务。

如果性能真的是一个问题,那么发送bcp文件绝对是将数据插入数据库的最快方法。从你的问题中可以看出你已经知道如何做到这一点了。


我有一台十年的电脑,上面运行着SQL Server 2000,插入500行数据它也不会崩溃。 ;) - AnthonyWJones
它的主存储器是否超过32MB? - Martin K.

5

仅有50-500条记录并不构成“批量插入”。批量插入机制是为了大规模导入数据而设计的,需要紧接着进行备份。

在Web服务中,我会将XML直接传递到SQL服务器。具体操作取决于版本。


SQL Server 2008。但如果有成千上万的客户正在上传数据呢? - bigint
你们有成千上万的客户吗?每天会发布多少这样的帖子?也许另一种看待这个问题的方式是,在应用程序的活动期内,您预计总共会插入多少记录? - AnthonyWJones

3
这是什么样的网络服务?
如果是 .Net,通常最好的方法是将输入加载到 DataTable 中,然后使用 SqlBulkCopy 类将其发送到 SQL 服务器。

3

50-500行不应该是问题!无需进行性能调优!在应用程序中使用普通(预处理)SQL语句。

不要过于复杂和过度设计。

当您需要插入超过250,000行时,应考虑扩展!

不要关闭约束条件,否则可能会损坏数据库。


2
为了响应其他回答,对于 SQL Server 来说,500 行不是问题。如果您确实需要插入大量记录,则最快的方法是使用名为 BulkInsert 的内置存储过程, BulkInsert 我相信这是一个针对此类操作专门设计的 SQL Server 实用程序 bcp.exe 的入口点。 bcp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接