Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Error: Cannot declare more than 10000 local variables  [new]
garnet_003
Member

Откуда:
Сообщений: 8
При выполнении динамического SQL в зависимости от "размера" обрабатываемого пакета иногда возникает ошибка 484:
"Cannot declare more than 10000 local variables".

Вопрос - существет ли способ обойти это ограничение? Есть ли настройки в 2008SQL для этого?

Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (Intel X86) Sep 16 2010 20:09:22 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition on Windows NT 6.0 <X86> (Build 6002: Service Pack 2) (VM)
6 июл 11, 14:18    [10932328]     Ответить | Цитировать Сообщить модератору
 Re: Error: Cannot declare more than 10000 local variables  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
10000 локальных переменных. С ума сойти.
6 июл 11, 14:24    [10932403]     Ответить | Цитировать Сообщить модератору
 Re: Error: Cannot declare more than 10000 local variables  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
А он хочет еще больше, чтобы и мы с ума сошли.
6 июл 11, 14:25    [10932418]     Ответить | Цитировать Сообщить модератору
 Re: Error: Cannot declare more than 10000 local variables  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
garnet_003, возможно, получится переписать генератор этого запроса, чтобы какие-то значения хранились не в скалярных переменных, а группами в таблицах.
6 июл 11, 14:32    [10932484]     Ответить | Цитировать Сообщить модератору
 Re: Error: Cannot declare more than 10000 local variables  [new]
Glory
Member

Откуда:
Сообщений: 104751
garnet_003
При выполнении динамического SQL в зависимости от "размера" обрабатываемого пакета иногда возникает ошибка 484:
"Cannot declare more than 10000 local variables".

Одной переменной varchar(max) разве недостаточно ?
6 июл 11, 14:33    [10932503]     Ответить | Цитировать Сообщить модератору
 Re: Error: Cannot declare more than 10000 local variables  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Glory
garnet_003
При выполнении динамического SQL в зависимости от "размера" обрабатываемого пакета иногда возникает ошибка 484:
"Cannot declare more than 10000 local variables".

Одной переменной varchar(max) разве недостаточно ?
Так он про них и говорит!
6 июл 11, 14:35    [10932521]     Ответить | Цитировать Сообщить модератору
 Re: Error: Cannot declare more than 10000 local variables  [new]
Glory
Member

Откуда:
Сообщений: 104751
iap
Glory
пропущено...

Одной переменной varchar(max) разве недостаточно ?
Так он про них и говорит!

Я думаю, что речь идет о динамическом запросе генерируемом "старым" методом - через конкатенацию переменных varchar(8000)
6 июл 11, 14:37    [10932532]     Ответить | Цитировать Сообщить модератору
 Re: Error: Cannot declare more than 10000 local variables  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Кстати говоря, вот тут: http://msdn.microsoft.com/ru-ru/library/ms143432(v=SQL.105).aspx ничего про это ограничение не сказано.
Непорядок...
6 июл 11, 14:40    [10932552]     Ответить | Цитировать Сообщить модератору
 Re: Error: Cannot declare more than 10000 local variables  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Glory
iap
пропущено...
Так он про них и говорит!

Я думаю, что речь идет о динамическом запросе генерируемом "старым" методом - через конкатенацию переменных varchar(8000)
А мне показалось, что в динамическрм запросе прописывается объявление 10001 локальной переменной...
6 июл 11, 14:42    [10932565]     Ответить | Цитировать Сообщить модератору
 Re: Error: Cannot declare more than 10000 local variables  [new]
garnet_003
Member

Откуда:
Сообщений: 8
Glory
Я думаю, что речь идет о динамическом запросе генерируемом "старым" методом - через конкатенацию переменных varchar(8000)

Да. Именно так. В зависимости от длины обрабатываемого сообщения в цикле формируется список переменных varchar(8000). Затем формируется динамический запрос с положением результата во временную таблицу #tTable для дальнейшей обработки. Переписать под табличные переменные не получится - динамический SQL.
Получается, что выход только один - ограничивать размер обрабабываемого пакета данных.

iap
Кстати говоря, вот тут: http://msdn.microsoft.com/ru-ru/library/ms143432(v=SQL.105).aspx ничего про это ограничение не сказано.
Непорядок...
Перед тем как писать, заглянул ... Действительно, ограничений явно не написано. Но в ошибках такое есть. Думал, что в 2008 это хоть в настройки вынесли :-(
6 июл 11, 16:03    [10933409]     Ответить | Цитировать Сообщить модератору
 Re: Error: Cannot declare more than 10000 local variables  [new]
garnet_003
Member

Откуда:
Сообщений: 8
Glory
Одной переменной varchar(max) разве недостаточно ?

Ок. Просто когда переносили часть задачи с SQL2000 на 2008 как-то не задумались над этим.
Спасибо.
6 июл 11, 16:08    [10933470]     Ответить | Цитировать Сообщить модератору
 Re: Error: Cannot declare more than 10000 local variables  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
garnet_003
Да. Именно так. В зависимости от длины обрабатываемого сообщения в цикле формируется список переменных varchar(8000). Затем формируется динамический запрос с положением результата во временную таблицу #tTable для дальнейшей обработки. Переписать под табличные переменные (?)не получится не умею - динамический SQL.
Получается, что выход только один - ограничивать размер обрабабываемого пакета данных.

Если слегка помучаться, все у вас получится. 10000 локальных переменных.... убиться веником.
6 июл 11, 16:23    [10933621]     Ответить | Цитировать Сообщить модератору
 Re: Error: Cannot declare more than 10000 local variables  [new]
garnet_003
Member

Откуда:
Сообщений: 8
Получилось.
Всем спасибо.
6 июл 11, 19:42    [10934985]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить