Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sp_executesql не хватает nvarchar(max) / 11 сообщений из 11, страница 1 из 1
23.03.2021, 16:23
    #40056320
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_executesql не хватает nvarchar(max)
Привет
Microsoft SQL Server 2008 R2 (SP3) - 10.50.6220.0 (Intel X86) Mar 19 2015 13:34:46 Copyright (c) Microsoft Corporation Enterprise Edition on Windows NT 5.2 <X86> (Build : ) (Hypervisor)

Пытаюсь собрать строку для выполнения в sp_executesql, тип объявил nvarchar(max), строка больше 4000 символов
что блин можно в этом случае сделать???
...
Рейтинг: 0 / 0
23.03.2021, 16:27
    #40056321
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_executesql не хватает nvarchar(max)
2 Гб не хватает?...
...
Рейтинг: 0 / 0
23.03.2021, 16:27
    #40056323
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_executesql не хватает nvarchar(max)
Sandist,

Да, тоже приходилось разбивать на блоки на 4000 символов.
...
Рейтинг: 0 / 0
23.03.2021, 16:30
    #40056328
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_executesql не хватает nvarchar(max)
Гавриленко Сергей Алексеевич,

4000 символов - 2ГБ? если так то не хватает
...
Рейтинг: 0 / 0
23.03.2021, 16:31
    #40056330
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_executesql не хватает nvarchar(max)
teCa,
дай пример пожалуйста, только именно для sys.sp_executesql
...
Рейтинг: 0 / 0
23.03.2021, 16:31
    #40056331
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_executesql не хватает nvarchar(max)
Sandist
Гавриленко Сергей Алексеевич,

4000 символов - 2ГБ? если так то не хватает

https://docs.microsoft.com/ru-ru/sql/relational-databases/system-stored-procedures/sp-executesql-transact-sql?view=sql-server-ver15[ @stmt= ] statement
Is a Unicode string that contains a Transact-SQL statement or batch. @stmt must be either a Unicode constant or a Unicode variable. ... On 64-bit servers, the size of the string is limited to 2 GB, the maximum size of nvarchar(max).
...
Рейтинг: 0 / 0
23.03.2021, 16:38
    #40056338
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_executesql не хватает nvarchar(max)
Гавриленко Сергей Алексеевич,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare @SQL nvarchar(max) = N''
	       ,@Params nvarchar(max) = ''
	SET @Params = ' @ПоМес bit
				    ,@Точки varchar(max) 
				    ,@ВозвратНаРЦ int
				    ,@ТипД int'

	SET @SQL = N'
	SELECT res.ExtID_Ресурс, res.Код_Товар ,res.[Наименование товара]
		  ,SAP_Имя1_5 as SAP_Имя5
		  ,ISNULL(res.КластерВыручка,6) as КластерВыручка
		  ,ISNULL(res.КластерЦена,6) as ЦУ
		  ,res.Категория


...
Код: sql
1.
2.
3.
4.
5.
exec sys.sp_executesql @SQL, @params
						  ,@ПоМес
						  ,@Точки
						  ,@ВозвратНаРЦ
						  ,@ТипД



тут я получаю ограничение на количество символов - 4000, можно это обойти?
...
Рейтинг: 0 / 0
23.03.2021, 16:49
    #40056346
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_executesql не хватает nvarchar(max)
Sandist,

прошу прощения, скорее всего тут сработало ограничение на print @SQL так как если вывести строку через select у меня запрос помещается полностью в строку
...
Рейтинг: 0 / 0
23.03.2021, 16:53
    #40056350
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_executesql не хватает nvarchar(max)
Sandist
Код: sql
1.
exec sys.sp_executesql @SQL, @params



В таком виде все будет работать (см пример в спойлере)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
declare @SQL nvarchar(max) = N''
	       ,@Params nvarchar(max) = ''
	SET @Params = ' @id int'
	SET @SQL = N'
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов
--а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов а тут длинный комментарий больше 4к символов


SELECT @id
'


select Len(@SQL)


exec sys.sp_executesql @SQL, @params, 5


Проблема у вас в коде, который заменяет
Код: sql
1.
SET @SQL = ...
...
Рейтинг: 0 / 0
23.03.2021, 17:22
    #40056366
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_executesql не хватает nvarchar(max)
msLex,
нет, уже все ок, работает
я выводил текст через print для проверки, а он уже обрезал
...
Рейтинг: 0 / 0
23.03.2021, 17:24
    #40056368
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_executesql не хватает nvarchar(max)
Проверять длину строки надо через len / datalength
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sp_executesql не хватает nvarchar(max) / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]