powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как записать в поле TEXT или IMAGE данные размером вплоть до 2GB?
4 сообщений из 4, страница 1 из 1
Как записать в поле TEXT или IMAGE данные размером вплоть до 2GB?
    #32020332
Yuriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно как записать в поле TEXT или IMAGE данные размером вплоть до 2GB? Сделать это с помощью обычного INSERT или UPDATE нельзя, с помощью writetext можно записать до 120кб, можно как то это сделать вроде используя dbwritetext, но как? Может кто-то помочь?
...
Рейтинг: 0 / 0
Как записать в поле TEXT или IMAGE данные размером вплоть до 2GB?
    #32020343
BiSas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наряду с writetext надо использовать

UPDATETEXT { table_name.dest_column_name dest_text_ptr }
{ NULL | insert_offset }
{ NULL | delete_length }
[ WITH LOG ]
[ inserted_data
| { table_name.src_column_name src_text_ptr } ]

Дописывая весь текст порциями.
Разберётесь?
...
Рейтинг: 0 / 0
Как записать в поле TEXT или IMAGE данные размером вплоть до 2GB?
    #32020344
Yuriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таким способом пробывал, но когда писал что вставлять текст начиная с 8000 позиции СКЛ выдавал ошибку, какую не помню... Сейчас нет возможности попробывать, нет под рукой СКЛ. Но правда тогда строчка была размером символов 100 и я пытался сразу вставлять в 8000 позицию, может быть из-за этого ошибка. Еслибы Вы прислали пример был бы очень признателен. Кстати в МСДН написано что всётаки writetext может записывать до 120кб, а если сказано хотите писать более то нужно использовать dbwritetext Может конечно я чегото не допонял.
...
Рейтинг: 0 / 0
Как записать в поле TEXT или IMAGE данные размером вплоть до 2GB?
    #32020357
BiSas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
create table TextTable
(
[ID] int identity(1,1) not null,
FText Text
)
go

set nocount on
declare @ptrval binary(16),
@sLeftPart varchar(100),
@sRightPart varchar(100),
@sCenterPart varchar(8000),
@AddStr varchar(8000),
@ID int,
@i int,
@Offset int

insert TextTable (FText) values ('')
set @ID = @@Identity

select @ptrval = TEXTPTR(FText)
from TextTable
where [ID] = @ID

--В этом цикле генерятся строки случайной длинны
--и вставляются в поле FText
set @Offset = 0
set @i = 1
while @Offset <= 500000
begin
set @sLeftPart = 'Начало порции N'+Ltrim(Str(@i,20))+' '
set @sRightPart = ' конец порции N'+Ltrim(Str(@i,20))+char(13)+char(10)
set @sCenterPart = REPLICATE('F', Round(RAND() * (8000-DataLength(@sLeftPart)-DataLength(@sRightPart)),0))

set @AddStr = @sLeftPart + @sCenterPart + @sRightPart

UPDATETEXT TextTable.FText @ptrval @Offset 0 @AddStr
set @Offset = @Offset + DataLength(@AddStr)
set @i = @i + 1
end

set nocount off

--Вот убедитесь что длина данных в FText > 500000
select DataLength(FText) from TextTable

drop table TextTable
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как записать в поле TEXT или IMAGE данные размером вплоть до 2GB?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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