Pull to refresh

Comments 36

ха-хабра-кат ;)

> Уже несколько дней бьюсь головой в монитор… :)
это помогает? ;)
Сделал кат. Не помогает, голова болит. :)
позвоните в мяу-крософт ;)
Звонок с вопросом по поводу SQL Server 2000 Enterprise стоит у них 170 баксов. ;)
Помогать друг другу нужно! Но это не форум.
На форумах уже спрашивал, уже на двух. И везде молчат.
Это они про varchar(8000) пишут. Там text, с которым работать сплошной геморрой…
Ой, отправилось уже
Там еще про ntext какой то пишут.
Вроде, там все еще хуже ))
Да, в 2005-м поле text может содержать данные до 2-х гб. Мало того, там еще есть varchar(max), аналогичный по сути. У нас стоит 2000 версия, в которой нет varchar(max), а поле text является таким же. Но это все хорошо, главное, что ответ возвращаемый пользователю не содержит всего того, что есть в БД.
Если я правильно понял, то в 2000 и сохранено может быть в одном текстовом поле макс. 8к данных? Если да, то по идее больше вернуть и не получится.

Taк же я прочитал (возможно не очень внимательно, потому может быть неверно), что данные передаются кусками маx. 8k? Если это верно, может запрос надо как то особо обрабатывать?
Можно сохранить больше 8 кб, если использовать поле типа text. С ним и напряги.
Насчет какой-то другой обработки запроса не знаю, никогда не слышал…
А Вы уверены, что Ваши данные хранятся на сервере?
Что показывает текущее выполнение запроса в EM?
Конечно уверен, смотрел на них из студии. В базе все правильно.
Что такое ЕМ?
EM = Enterprise Manager. Короче, я так студию назвал по привычке, это старое название.
Навскидку ничего не вспоминается из подобных ошибок :(
А, ну там все прекрасно, запрос возвращает корректные данные.
Может поможет:

SET TEXTSIZE { number }: resets the @@TEXTSIZE function return value.
The maximum setting for SET TEXTSIZE is 2 gigabytes (GB), specified in
bytes.
Не помогает, уже пробовал. :(
Почитал, не про мою. Моя проблема в том, что данные теряются (скорее всего) где-то на обратном пути от сервера баз данных.
>>Сервер отдает данные полностью
то есть запрос в том же квери аналайзире все нормально отдает?
Хм, давно работал с ms sql 2000 через iis 6.0 — не было подобных проблем (правда через браузер, но думаю что проблема не в этом)
К аналайзеру у меня доступа нет, потому как к нему только члены роли sysadmin доступ имеют.
А так, в окне результатов все правильно.
Сейчас не могу сказать, завтра узнаю.
+SELECT CONVERT(nvarchar(8000), mes_text) FROM news_text (nolock) WHERE mes_id = '%mes_id%' and source_code = 'Source1'
«The size (8000) given to the convert specification 'nvarchar' exceeds the maximum allowed (4000).»
Если исправить на varchar(8000), то содержимое просто обрезается.
А почему бы не циклом отдавать по кусочку?
Как в sql-запросе сделать цикл?
DECLARE @len int, @pos int, @sort int, @buffsize int
SELECT @len=DATALENGTH(mes_text) FROM news_text (nolock) WHERE mes_id = '%mes_id%' AND source_code = Source1'
select @sort = 1, @pos = 0

declare @result (ne_text varchar(8000), sort int primary key clustered)
declare @buff varchar (8000)

while @pos < @len
begin
set @buffsize = 8000
if (@len — @pos < @buffsize)
@buffsize = @len — @pos
insert into @result (ne_text, sort)
SELECT SUBSTRING(mes_text, @pos, @buffsize) ne_text, 1 sort FROM news_text (nolock) WHERE mes_id = '%mes_id%' AND source_code = 'Source1'

set @pos = @pos + @buffsize

end

select * from @result

ну или что-то вроде этого
Вот это я понимаю, мощный изврат. :))
Спасибо, запишу в блокнотик, полезная информация. А проблему уже решил, щас напишу в посте каким образом.
Насчет апдейта: мда, сейчас как-то дико выглядят подобные ограничения…
Sign up to leave a comment.

Articles