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。
答案 0 :(得分:1)
这会产生一个巨型语句,当然最终会失败。
您应该一次执行INSERT
个UNION ALL
,至少在优化之前。
我觉得你的最终答案将涉及BULK INSERT
,但我对你的申请知之甚少。