Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Размер данных для выполнения sp_executesql  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Подскажите как указать размер данных превышающих 4000 ?
Иначе "рано или поздно" не хватит для построения запроса (((

declare @sql nvarchar(4000)
exec sp_executesql @sql
9 окт 12, 10:16    [13288494]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
Алексей Кр
Подскажите как указать размер данных превышающих 4000 ?
Иначе "рано или поздно" не хватит для построения запроса (((

declare @sql nvarchar(4000)
exec sp_executesql @sql


declare @sql nvarchar(MAX)


Но если версия сервера позволяет
9 окт 12, 10:24    [13288523]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
А Max чему может равняться?
9 окт 12, 10:27    [13288553]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Алексей Кр
А Max чему может равняться?
2 гигабайта
9 окт 12, 10:59    [13288788]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Александр Бердышев
Member

Откуда: Санкт-Петербург
Сообщений: 400
А разве sp_executesql не будет обрезать всё, что больше 4000 символов?

Кто-нибудь может с ходу сказать, как меняется эта ситуация от 2005 к 2012 серверу?
9 окт 12, 11:28    [13289030]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
Александр Бердышев
А разве sp_executesql не будет обрезать всё, что больше 4000 символов?

Кто-нибудь может с ходу сказать, как меняется эта ситуация от 2005 к 2012 серверу?


Да зайдите в MSDN. Что за пошесть такая игнорируя первоисточник начинать на форумы писать.
9 окт 12, 11:29    [13289042]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Glory
Member

Откуда:
Сообщений: 104751
Александр Бердышев
А разве sp_executesql не будет обрезать всё, что больше 4000 символов?

Кто-нибудь может с ходу сказать, как меняется эта ситуация от 2005 к 2012 серверу?

Ситуация не менялась с sql2000.
Это вы что-то придумали.
9 окт 12, 11:35    [13289086]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Указал MAX
при выведе на печать переменной (print), обрезал на 4000...
9 окт 12, 11:35    [13289090]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Алексей Кр
Указал MAX
при выведе на печать переменной (print), обрезал на 4000...

Не пробовали почитать документацию? Там много забавного написано
в том числе и про print
9 окт 12, 11:37    [13289113]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Ну добавил в середину строки (запроса) большее количество строк, чтоб явно превышал 4000....
Убрал различные print и len...
Не выполняется запрос!!! Если удаляю добавленные строки - Тогда выполняется!!!
Указано nvarchar(MAX)
То есть получается MAX всё равно = 4000 ???
Объясните!!!!

Какой объем строки может принимать sp_executesql ?
В msdn про sp_executesql указано:
"Размер строки ограничивается только доступной серверу баз данных памятью. В 64-разрядных версиях сервера размер строки ограничен 2 ГБ — максимальным размером типа nvarchar(max)"

У меня указан как раз nvarchar(max) (правда 32х система) но всё же...

На какой максимальный размер строки можно завязаться при вызове sp_executesql ?
9 окт 12, 11:47    [13289214]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3637
select @@version ?
9 окт 12, 11:48    [13289227]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86) Jun 17 2011 00:57:23 Copyright (c) Microsoft Corporation Developer Edition on Windows NT 6.1 <X86> (Build 7600: )
9 окт 12, 11:49    [13289234]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3637
Размер строки ограничивается только доступной серверу баз данных памятью. В 64-разрядных версиях сервера размер строки ограничен 2 ГБ — максимальным размером типа nvarchar(max).
9 окт 12, 11:50    [13289242]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Размер строки ограничивается только доступной серверу баз данных памятью. - это я видел и указал в своем сообщении

Как узнать предел памяти? Как узнать максимальное количество символов ???
9 окт 12, 11:52    [13289256]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
Алексей Кр
Указал MAX
при выведе на печать переменной (print), обрезал на 4000...


Попробуйте сделать так
select cast(@sql as xml)

Если нет ряда символов для xml недружественнызх. то сможете все значение увидеть.
9 окт 12, 11:53    [13289270]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Еще заметил, многие отсылают или в мсдн, или явные вещи перенабирают, когда и так всё видно и ясно...
А прямо указать пояснить не могут, смысл ? Явно указать, может кто сталкивался, как выходили из положения - об этом тишина...
Или количеством сообщении свои учетные записи в рейтинге поднимают или еще что-то...

Пожалуйста, по существу, явно поясните!!!
9 окт 12, 11:54    [13289280]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Alexandr Kr.,

Также обрезался текст...
9 окт 12, 11:55    [13289297]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Glory
Member

Откуда:
Сообщений: 104751
Алексей Кр
А прямо указать пояснить не могут, смысл ?

Давайте начнем анонсировать явные вещи.
Например, летом тепло, а зимой холодно.

Алексей Кр
Пожалуйста, по существу, явно поясните!!!

Что конкертно вам непонятно из прочитанного вами в хелпе ?
9 окт 12, 11:56    [13289313]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Алексей Кр
Как узнать предел памяти? Как узнать максимальное количество символов ???
2 2 гигабайта
Алексей Кр
А прямо указать пояснить не могут, смысл ?
Я вам прямо указал в первом ответе темы.
Алексей Кр
Явно указать, может кто сталкивался, как выходили из положения - об этом тишина...
Я тоже сталкивался с ошибками в своём коде :-) Выходил из положения чтением кода и отладкой.

Ну для начала выведите перед:
exec sp_executesql @sql 

запрос
select len(@sql)
9 окт 12, 12:00    [13289349]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Ну я ж указал , что делал я так!!!
автор
Убрал различные print и len...


Причем тут отладка приложения, когда строка большего объема, больше 4000 символов не проходит, обрезается (концовка запроса отсекается) и поэтому и запрос не проходит!!!! Что тут неясно???

Какие 2 Гб (указали выше, что 2 ГБ только для 64х разрадных систем... ???

Еще раз процитирую для невнимательных
Алексей Кр
Ну добавил в середину строки (запроса) большее количество строк, чтоб явно превышал 4000....
Убрал различные print и len...
Не выполняется запрос!!! Если удаляю добавленные строки - Тогда выполняется!!!
Указано nvarchar(MAX)
То есть получается MAX всё равно = 4000 ???
Объясните!!!!

Какой объем строки может принимать sp_executesql ?
В msdn про sp_executesql указано:
"Размер строки ограничивается только доступной серверу баз данных памятью. В 64-разрядных версиях сервера размер строки ограничен 2 ГБ — максимальным размером типа nvarchar(max)"

У меня указан как раз nvarchar(max) (правда 32х система) но всё же...

На какой максимальный размер строки можно завязаться при вызове sp_executesql ?
9 окт 12, 12:03    [13289373]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Кто скажет, как определить MAX для nvarchar на конкретном SQL сервере?
9 окт 12, 12:04    [13289380]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
Алексей Кр
Ну добавил в середину строки (запроса) большее количество строк, чтоб явно превышал 4000....


а строка прямо литералом записана: 'asdfasdfasd', или собирается как-то: 'asdf' + @var + ... ?
9 окт 12, 12:18    [13289504]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Алексей Кр
Кто скажет, как определить MAX для nvarchar на конкретном SQL сервере?
Я могу сказать (в третий раз).

Независимо от объёма памяти, версии сервера, версии ОС, и ни от чего ещё nvarchar(MAX) вмещает 2 гагабайта данных, то есть 1 гигасимвол. Всё вышеперечисленное может только привести к замедлению работы сервера или к ошибке переполнения, но ни при каких обстоятельствах не может привести к обрезанию строки.

Вы вообще в состоянии отлаживать код? Вы можете понять, после какой конкретно операции обрезалась строка, можете добавить вывод длинны строки после каждой операции над строкой? Вы понимаете, как делается приведение типов в выражениях конкатенации (складывания) строк?
9 окт 12, 12:20    [13289519]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Общая строка собирается из частей:
@sqlstr = 'abcd' + @keyvalue + ' abcd ' + .... + ' ))) '
9 окт 12, 12:21    [13289532]     Ответить | Цитировать Сообщить модератору
 Re: Размер данных для выполнения sp_executesql  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
ну так вот у вас тут и проблема: склеивать надо тоже varchar(max) кусками
Алексей Кр
@sqlstr = 'abcd' + @keyvalue + ' abcd ' + .... + ' ))) '
9 окт 12, 12:23    [13289544]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить