Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
2 / 2 / 1
Регистрация: 30.01.2012
Сообщений: 25

Запись в Mssql BLOB: как обойтись без Filestream?

10.10.2016, 07:57. Показов 4986. Ответов 23

Студворк — интернет-сервис помощи студентам
Доброго времени суток форумчане.
У меня обновление программы реализовано через скачивание из БД ms sql 2008 r2 новой версии программы в виде zip с дальнейшем разархивированием.
Есть своя программка записи программы в БД blob.
Раньше всё работало хорошо, но когда в состав обновления добавил разные файлы и суммарный объём стал 400-500 Mb загрузчик в БД стал переполнять память.
Проблема выяснилась в том что для записи в Blob поле архив загоняю в filestram (классический рецепт взят на просторах форума), т.е. как я понял при создании файлпотока файл создаётся в памяти и мдёт её переполнение (>1200 mb).
Как обойти открытие в файлпотоке для записи в БД.
По сути это вопрос записи больших файлов в blob БД.
Спасибо.
P.S. Сейчас спасает использование 64 разр версии с 4 гб оперативной памяти, но на долго ли это.
P.S. Считывание из БД сразу в файл работает без запинок.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.10.2016, 07:57
Ответы с готовыми решениями:

Как не сохраняя на диске открыть файл из Blob-поля (mssql)
Привет всем. Появилась необходимость разобраться с сохранением и чтением файлов в БД MS SQL средствами делфей. Разобрался с сохранением...

Использование Filestream в MSSql
Создаю БД фотографий в MSSql. Загоняю их в VARBINARY(MAX) все прекрасно и в общем меня устраивает. Работаю C# с Linq to Entities (MVC). Для...

Как обойтись без x
Есть алгоритм (см. прикрепления) Нужно обойтись без x Речь идет о замене элементов находящихся на четных и нечетных местах. (поменять...

23
2 / 2 / 1
Регистрация: 30.01.2012
Сообщений: 25
11.10.2016, 23:13  [ТС]
Студворк — интернет-сервис помощи студентам
MyEternity, это называется
"Через Делфи нельзя делайте костыль". СПС. Ничего нового.
Закройте тему.
0
 Аватар для MyEternity
97 / 97 / 25
Регистрация: 25.04.2016
Сообщений: 525
11.10.2016, 23:16
А уж если и так не запишется из-за нехватки выделенной серверу памяти, то вам впору винить MS за их "косячный SQL Server".

Добавлено через 1 минуту
Цитата Сообщение от вольдемар Посмотреть сообщение
"Через Делфи нельзя делайте костыль". СПС. Ничего нового.
Это называется - MSSQL сам "постранично" возьмет ваш файл, и блоками по сколько-то запишет его в BLOB. Т.е. сделает примерно:
Цитата Сообщение от MyEternity Посмотреть сообщение
Либо писать в BLOB по частям через тот же самый tFileStream;
Вот только вам, не придется это реализовывать, психуя на несовершенность Delphi
0
2 / 2 / 1
Регистрация: 30.01.2012
Сообщений: 25
11.10.2016, 23:27  [ТС]
Перечитайте всю тему! в X64 для загрузчика обновлений на сервер при использовании всей памяти ПК и сервера всё работает на ура. И если есть одна команда на скачивание Блоб с сервера (всех 400-500мб разом дальнейшей работавшая х32) но нет на запись Блоб в х32 значит надо разбираться.
Я не обвиняю всё подряд. У меня рабочий код и с ограничением рабочий апдейт но НА ВОПРОС в приличном обществе принято отвечать и отнюдь не вопросом.
Если нет то скажите нет! Я же не спрашиваю какие у вас проекты и не дурак ли вы что их вообще на Делфи делаете.
Тут четкий технический (кибер) форум. Если не можете помочь то как профессионал сначала скажите что это либо невозможно либо очень сложно.
Не парьте мозг. За это время я скорее всего давно бы разобрался и судя выложил бы решение. Даже если это процедура авто разбива файла и запихивание в единое блоб поле.
Тему считаю закрытой.
0
 Аватар для MyEternity
97 / 97 / 25
Регистрация: 25.04.2016
Сообщений: 525
12.10.2016, 00:21
Пример дозаписи в BLOB.
Реализуйте на хранимке и кормите хранимку кусками tFileStream хоть по 1024 байта.

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
DECLARE @vt TABLE (id INT, pdata varbinary(MAX));
 
DECLARE @buffer varbinary(MAX);
IF NOT EXISTS (SELECT pdata FROM @vt WHERE id = 1) 
BEGIN
    INSERT INTO @vt SELECT 1, CONVERT(varbinary, '');
END
 
SELECT * FROM @vt
 
SET @buffer = (SELECT pdata FROM @vt WHERE id = 1)
SET @buffer = @buffer + CONVERT(varbinary, 'Петя');
UPDATE @vt SET pdata = @buffer WHERE id = 1
 
SELECT * FROM @vt
 
SET @buffer = (SELECT pdata FROM @vt WHERE id = 1)
SET @buffer = @buffer + CONVERT(varbinary, ' и Маша');
UPDATE @vt SET pdata = @buffer WHERE id = 1
 
SELECT * FROM @vt
 
SET @buffer = (SELECT pdata FROM @vt WHERE id = 1)
SET @buffer = @buffer + CONVERT(varbinary, ' = Это взырвная смесь!');
UPDATE @vt SET pdata = @buffer WHERE id = 1
 
SELECT * FROM @vt
SELECT CONVERT(VARCHAR(MAX), pdata) FROM @vt WHERE id = 1
И да, это не костыль
Миниатюры
Запись в Mssql BLOB: как обойтись без Filestream?  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.10.2016, 00:21

Как обойтись без x
Есть алгоритм (см. прикрепления) Нужно обойтись без x Речь идет о замене элементов находящихся на четных и нечетных местах. (поменять...

Как обойтись без капчи
Уважаемые господа! Подскажите, кто знает, какие элементы кода можно использовать, чтобы обойтись без капчи? Я о том, умеют ли боты...

не как без вас не обойтись
1.Нужно выразить из формулы s=v*t-(at*t)/2 переменную. t 2.Как преобразовать вещественное число в формат чч.мм.сс например: ...

Как обойтись без списка?
Есть список Tick в который несколько раз в секунду добавляются новые объекты (Time, Volume). Возможны ситуации, когда объекты не...

Как обойтись без сокетов?
Здравствуйте! Стоит следующая задача: есть сервер с виртуальным хостингом, есть от 2 до 5 компьютеров, в дальнейшем больше планируется. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru