Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 sp_send_dbmail body nvarchar(max) обрезает по 4000  [new]
student-uni
Member

Откуда: Одесса
Сообщений: 1102
а в документации стоит что nvarchar(max) должен 2 в степени 31 минус 1 брать

Почему же обрезает ?

Спасибо
25 ноя 09, 15:08    [7977068]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail body nvarchar(max) обрезает по 4000  [new]
Glory
Member

Откуда:
Сообщений: 104760
А почему вы решили, что это сервер обрезает ? А не вы туда заносите такие данные ?
25 ноя 09, 15:11    [7977097]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail body nvarchar(max) обрезает по 4000  [new]
student-uni
Member

Откуда: Одесса
Сообщений: 1102
потому что я задекларировал переменную nvarchar(max)
присваиваю ей значение
(текст прямо в скрипте, правда плюсую к нему еще две переменные nvarchar(30))
и передаю ее

все работало, но когда я однажды увеличил длину значения стало обрезать
25 ноя 09, 15:14    [7977134]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail body nvarchar(max) обрезает по 4000  [new]
Glory
Member

Откуда:
Сообщений: 104760
student-uni
потому что я задекларировал переменную nvarchar(max)
присваиваю ей значение
(текст прямо в скрипте, правда плюсую к нему еще две переменные nvarchar(30))

И как вы проверили то, что в переменной длина строки получилась больше 4000 ?
25 ноя 09, 15:16    [7977149]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail body nvarchar(max) обрезает по 4000  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
student-uni
потому что я задекларировал переменную nvarchar(max)
присваиваю ей значение
(текст прямо в скрипте, правда плюсую к нему еще две переменные nvarchar(30))
и передаю ее

все работало, но когда я однажды увеличил длину значения стало обрезать

Покажите текст присвоения значения переменной nvarchar(max)
Если делаете конкатенацию строк, то надо явно преобразовать в nvarchar(max) через CONVERT или CAST
С уважением, Алексей
25 ноя 09, 15:19    [7977180]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail body nvarchar(max) обрезает по 4000  [new]
student-uni
Member

Откуда: Одесса
Сообщений: 1102
скопировал в ворд
показывает всего в моем боди 4749,
а до места обрезания 3905
25 ноя 09, 15:23    [7977218]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail body nvarchar(max) обрезает по 4000  [new]
student-uni
Member

Откуда: Одесса
Сообщений: 1102
DECLARE @mybody as nvarchar(max)
DECLARE @header as nvarchar(30)
DECLARE @footer as nvarchar(30)



SET @mybody= CAST(@header + 'text 5000 Symbols' + @footer as nvarchar(max))

sp_send_dbmail
...
@body = @mybody
25 ноя 09, 15:28    [7977267]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail body nvarchar(max) обрезает по 4000  [new]
Glory
Member

Откуда:
Сообщений: 104760
student-uni
скопировал в ворд
показывает всего в моем боди 4749,
а до места обрезания 3905

Замечательный метод проверки того, что же получится в переменной при выполнении скрипта
25 ноя 09, 15:29    [7977280]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail body nvarchar(max) обрезает по 4000  [new]
student-uni
Member

Откуда: Одесса
Сообщений: 1102
окей select len(@mybody) дает 4151
25 ноя 09, 15:32    [7977309]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail body nvarchar(max) обрезает по 4000  [new]
student-uni
Member

Откуда: Одесса
Сообщений: 1102
разобрался, одно из слагаемых таки да небыло закастировано в nvarchar(max)
всем спасибо за очередное глумление над личностъю :-)
25 ноя 09, 15:39    [7977368]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить