Недостаточно системной памяти для выполнения этого запроса при создании временной таблицы - PullRequest
0 голосов
/ 28 апреля 2010
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 МБ.

Средняя длина каждого кода - 15.

1 Ответ

1 голос
/ 28 апреля 2010

Это приводит к одному гигантскому утверждению, и, конечно, в конечном итоге оно терпит неудачу.

Вы должны делать свои INSERT по одному (не UNION ALL), по крайней мере, пока не наступит время для оптимизации.

У меня есть ощущение, что ваш окончательный ответ будет включать BULK INSERT, но я не знаю достаточно о вашем заявлении, чтобы быть уверенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...