SQLCommand ExecuteNonQuery最大CommandText长度?

Don*_*ett 6 c# sql database sql-server sqlcommand

我在互联网上搜索,一切似乎都是关于个别领域或做一个插入.我有一个迁移工具,它从旧的遗留数据库(superbase)迁移到我们的SQL服务器数据库(2008).目前,我正在从旧数据库中读取20,000条记录,并生成一个SQLCommand.CommandText包含分号分隔的20,000个插入语句的大字符串.这很好用.但我可以做25k吗?30K?我试着没有任何限制,但当我试图运行ExecuteNonQuery一个CommandText包含超过400万个INSERT语句时,它说了一些关于太久的事情.我不记得确切的错误信息,抱歉.我找不到有关确切限制的任何文档.对我来说很重要,因为我可以一次点火的插入越多,整个过程就越快.任何建议/链接/文档将不胜感激,谢谢!

CRA*_*DBA 5

这取决于SQL Server版本.

http://technet.microsoft.com/en-us/library/ms143432.aspx

对于SQL Server 2012,批处理大小或SQL语句(字符串)= 65,536*网络包大小.

网络数据包大小是用于在应用程序和关系数据库引擎之间进行通信的表格数据流(TDS)数据包的大小.默认数据包大小为4 KB,由网络数据包大小配置选项控制.

简而言之,64K x 4K = 256 MB.同样,这假设您使用的是默认数据包大小.