Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
sabitaidr
Member

Откуда:
Сообщений: 97
Добрый день всем.
создал запрос, который в конце делает следующее:
select *
into Energo..PlanTeMP
from #Plan
далее делаем select * from Energo..PlanTeMP
16 янв 14, 09:15    [15422799]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
sabitaidr
Member

Откуда:
Сообщений: 97
select plan from Energo..PlanTeMP выдает результаты такого плана:
30/08/2013=1=1390.00;31/12/2012=1=1390.00;30/11/2011=1=1390.00;31/10/2011=1=1390.00;30/04/2012=1=1390.00; 31/01/2012=1=1390.00;30/04/2013=1=1390.00;31/07/2014=1=1390.00;31/07/2013=1=1390.00;30/06/2014=1=1390.00;31/10/2012=1=1390.00;29/08/2014=1=1390.00;30/09/2013=1=1390.00;28/06/2013=1=1390.00;30/11/2012=1=1390.00;19/09/2014=1=1350.00;31/01/2013=1=1390.00;31/03/2014=1=1390.00;30/05/2014=1=1390.00;29/03/2013=1=1390.00;31/07/2012=1=1390.00;31/05/2013=1=1390.00;30/12/2011=1=1390.00;29/11/2013=1=1390.00;31/12/2013=1=1390.00;31/08/2012=1=1390.00;29/06/2012=1=1390.00;30/03/2012=1=1390.00;28/09/2012=1=1390.00;29/02/2012=1=1390.00;31/05/2012=1=1390.00;28/02/2014=1=1390.00;31/10/2013=1=1390.00;28/02/2013=1=1390.00;30/04/2014=1=1390.00;31/01/2014=1=1390.00;29/03/2013=2=370.29;30/05/2014=2=109.77;31/05/2012=2=601.66;31/08/2012=2=558.59;31/10/2011=2=715.07;29/06/2012=2=600.96;30/04/2013=2=388.75;30/11/2011=2=751.36;28/02/2014=2=177.62;30/11/2012=2=495.01;31/10/2012=2=497.75;30/03/2012=2=620.83;31/03/2014=2=139.97;28/06/2013=2=347.61;31/01/2013=2=453.37;29/11/2013=2=241.37;31/01/2012=2=707.01;31/01/2014=2=198.86;30/04/2012=2=642.66;31/07/2014=2=68.65;30/12/2011=2=706.13;29/02/2012=2=685.73;28/09/2012=2=537.39;31/10/2013=2=253.72;30/09/2013=2=283.18;31/12/2013=2=211.91;30/04/2014=2=135.12;31/07/2013=2=314.04;31/12/2012=2=458.11;30/08/2013=2=305.11;31/05/2013=2=356.54;31/07/2012=2=559.97;19/09/2014=2=27.50;28/02/2013=2=432.62;30/06/2014=2=91.92;29/08/2014=2=50.11;

в новом окне создаю уже другой скрипт и конечный select выглядит след. образом:
select *
from #Client cl left join #AddressFact af on cl.f_clientid=af.f_clientid
left join #AddressReg ar on cl.f_clientid=ar.f_clientid
left join #TContract tc on cl.f_contractid=tc.f_contractid and cl.f_tl='0'
left join #Zalog z on tc.f_contractid=z.f_contractid
left join Energo..PlanTeMP plant on plant.f_contractid=tc.f_contractid and cl.f_tl='0'
left join Energo..Platez_TeMP platezt on platezt.f_contractid=tc.f_contractid and cl.f_tl='0'

и выходит след.ошибка:
Could not insert a row larger than the page size into a hash table. Resubmit the query with the ROBUST PLAN hint.

Ругается именно на табличку Energo..PlanTeMP, если ее закомментить, то все работает.

Помогите, пожалуйста, как решить эту проблему
16 янв 14, 09:21    [15422831]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31865
sabitaidr
и выходит след.ошибка:
Could not insert a row larger than the page size into a hash table. Resubmit the query with the ROBUST PLAN hint.
Так может последовать совету серера?

И вообще, покажите SELECT @@VERSION
16 янв 14, 09:38    [15422918]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
sabitaidr
Member

Откуда:
Сообщений: 97
alexeyvg,
так тоже пробовал,выходит другая ошибка:
Warning: The query processor could not produce a query plan from the optimizer because the total length of all the columns in the GROUP BY or ORDER BY clause exceeds 8000 bytes. Resubmit your query without the ROBUST PLAN hint.
16 янв 14, 09:59    [15423000]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
sabitaidr
Member

Откуда:
Сообщений: 97
alexeyvg,

Microsoft SQL Server 2000 - 8.00.2040
16 янв 14, 09:59    [15423005]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
GROUP BY or ORDER BY
Guest
sabitaidr
alexeyvg,
так тоже пробовал,выходит другая ошибка:
Warning: The query processor could not produce a query plan from the optimizer because the total length of all the columns in the GROUP BY or ORDER BY clause exceeds 8000 bytes. Resubmit your query without the ROBUST PLAN hint.

что-то не сходится, у вас в запросе нет ни group by ни order by, вы точно весь запрос привели?
Energo..PlanTeMP и Energo..Platez_TeMP это таблицы или вью?
16 янв 14, 10:21    [15423122]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
sabitaidr
Member

Откуда:
Сообщений: 97
Это таблицы. Да в том то и дело, что нет сортировки и группировки, а ошибка такая выходит.
16 янв 14, 11:51    [15423737]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
Glory
Member

Откуда:
Сообщений: 104751
sabitaidr
Да в том то и дело, что нет сортировки и группировки, а ошибка такая выходит.

Предварительный план выполнения генерируется ?
16 янв 14, 11:52    [15423745]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
sabitaidr
Member

Откуда:
Сообщений: 97
GROUP BY or ORDER BY,
единственное что не в этом запросе, так это то что там не select *, а select список полей. Их там окола 100 штук, нет смысла их перечислять. Там просто список полей, никаких максим, миним и т.д. там нет
16 янв 14, 11:54    [15423758]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
Glory
Member

Откуда:
Сообщений: 104751
sabitaidr
Там просто список полей, никаких максим, миним и т.д. там нет

А DISTINCT например ?
16 янв 14, 11:57    [15423779]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
sabitaidr
Member

Откуда:
Сообщений: 97
Glory, distinct есть
16 янв 14, 13:23    [15424432]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
Glory
Member

Откуда:
Сообщений: 104751
sabitaidr
Glory, distinct есть

Это GROUP BY по всем полям
16 янв 14, 13:50    [15424648]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
sabitaidr
Member

Откуда:
Сообщений: 97
Glory, спасибо.
А во самому вопросу есть какой-нибудь выход?
16 янв 14, 14:05    [15424737]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
Glory
Member

Откуда:
Сообщений: 104751
sabitaidr
А во самому вопросу есть какой-нибудь выход?

- не использовать GROUP BY/ORDER BY/DISTINC
- Resubmit your query without the ROBUST PLAN hint.
16 янв 14, 14:11    [15424774]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
GROUP BY or ORDER BY
Guest
sabitaidr
...есть какой-нибудь выход?

1. понять для чего делается дистинкт
2. по возможности сделать его как можно раньше (для меньшего числа полей)

например, если у вас в таблице #Client есть неуникальные записи и дистинк делает именно для их устранения, преписать запрос так ("*" - заменить на список требуемых полей)


select *
from (
select distinct *
from #Client cl 
) cl
left join #AddressFact af on cl.f_clientid=af.f_clientid
left join #AddressReg ar on cl.f_clientid=ar.f_clientid
left join #TContract tc on cl.f_contractid=tc.f_contractid and cl.f_tl='0'
left join #Zalog z on tc.f_contractid=z.f_contractid
left join Energo..PlanTeMP plant on plant.f_contractid=tc.f_contractid and cl.f_tl='0'
left join Energo..Platez_TeMP platezt on platezt.f_contractid=tc.f_contractid and cl.f_tl='0'
16 янв 14, 15:18    [15425209]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка:Could not insert a row larger than the page size into a hash table.  [new]
sabitaidr
Member

Откуда:
Сообщений: 97
Всем спасибо
20 янв 14, 11:16    [15439227]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить