创建临时表时,没有足够的系统内存来运行此查询

时间:2010-04-27 21:43:00

标签: c# sql-server-2005

StringBuilder query = new StringBuilder();
                    query.Append("CREATE TABLE #Codes (Code nvarchar(100) collate database_default ) ");
                    query.Append("Insert into #Codes (Code) ");
                    int lengthOfCodesArray = targetCodes.Length;
                    for (int index = 0; index < lengthOfCodesArray; index++)
                    {
                        string targetCode = targetCodes[index];
                        query.Append("Select N'" + targetCode + "' ");
                        if (index != lengthOfCodesArray - 1)
                        {
                            query.Append("Union All ");
                        }
                    }
  query.Append("drop table #Codes ");

on:cmd.ExecuteReader()我得到了

创建临时表

时,没有足够的系统内存来运行此查询
But weird thing is that, when I have 25k codes is ok, when 5k I get this error. 

初始大小为262 MB。

每个代码的长度平均为15。

1 个答案:

答案 0 :(得分:1)

这会产生一个巨型语句,当然最终会失败。

您应该一次执行INSERTUNION ALL,至少在优化之前。

我觉得你的最终答案将涉及BULK INSERT,但我对你的申请知之甚少。