:: Visual Foxpro, Foxpro for DOS
Re: Загрузка файлов на SQL (BLOB в IMAGE)
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
PaulWist
Попробуй изменить размер пакета (network packet size (B)) со стандартного 4096 до 9192, или больше кратно 4096.
Изменение размера пакета:
EXEC sp_configure 'network packet size', 9192
ошибку не исправило.
На стороне фокса всё работает, записывает в мемо поле и обратно считывает с него. А передача на SQL не проходит.
Журнал SQL показывает:
Error: 4014, Severity: 20, State: 1.
A fatal error occurred while reading the input stream from the network. The session will be terminated.
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
Скорее всего буду переходить на использования драйвера SQL Server Native Client 11.0. До 300 Мб файлы передаться будут, возможно этого и хватит.
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
А как же передать файл в 301 Мбайт ?

() Сетевой трафик посмотреть при передаче 700М-файла, сколько Мб проходит, сколько памяти занял фокс, драйвер...
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
hztp_serg
PaulWist
Попробуй изменить размер пакета (network packet size (B)) со стандартного 4096 до 9192, или больше кратно 4096.
Изменение размера пакета:
EXEC sp_configure 'network packet size', 9192
ошибку не исправило.

А где
RECONFIGURE
после
EXEC sp_configure 'network packet size', 9192


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
Изменял размер пакета вот так:
EXEC sp_configure 'show advanced options', 1
EXEC sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure 'set working set size', 0
EXEC sp_configure 'priority boost', 0
EXEC sp_configure 'network packet size', 9192
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure 'allow updates', 0
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure
GO
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
of63
А как же передать файл в 301 Мбайт ?
() Сетевой трафик посмотреть при передаче 700М-файла, сколько Мб проходит, сколько памяти занял фокс, драйвер...
Боюсь время потеряю, а результата не будет. Так уже два дня играюсь. Может ещё постараюсь что-то сделать. Надежды уже мало.
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
На крайняк, зазипуй файл (если зипуемый, не картинки), больше войдет. Или разбей на 2-3 поля, будет (2-3) по 300 Мбайт... Как всегда, давай давай на гора, неважно что, пичаль )
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Ааа, тады вопросов не имею.

Что бы исключить влияние сети, попробуй загрузить BLOB прям на сервере (если есть доступ), или попробуй через стандартные утилиты bcp.

И кстати, проанализируй ошибку после
if SQLEXEC(m.lnCon, m.lcCommand) < 0
AERROR(Arr)
for i = 1 to alen(arr)
?arr(i)
endfor
endif

PS MSSQL 2008 + Native Client 10 без проблем загружали 1Г файл, возможно для 2005 есть ограничение.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 06.05.20 21:59
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
Анализ ошибки, на стороне vfp, ничего нового не показал:
[attachment 33206 blob_to_image007.jpg]
Есть вероятность, что причину нужно искать в сетевых настройках сервера. Подсказали статью:
www.mssqltips.com
в которой описываются возможные причины и способы решения ошибки, которая отображается в журнале SQL:
Error: 4014, Severity: 20, State: 1.
A fatal error occurred while reading the input stream from the network. The session will be terminated.
буду пробовать ещё этот вариант.
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
WbrErr

Сообщений: 1960
Дата регистрации: 05.12.2006
А просто по сети файл удается переписать?
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Буду совсем неоригинальным. А на кой ляд хранить на MSSQL файлы, тем более dbf-ы, тем более 700+ Мб в размере? IMHO что-то в консерватории поправить надо, а не искать способ превратить MSSQL в файло-помойку


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
alextash

Сообщений: 2281
Откуда: НСК
Дата регистрации: 03.05.2006
лучше всего dbf файл архивировать перед заливкой на сервер - я думаю уменьшит объём файла в 10 раз.

2 igor Korolev

Бизнес процесс он такой.
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
Igor Korolyov
Буду совсем неоригинальным. А на кой ляд хранить на MSSQL файлы, тем более dbf-ы, тем более 700+ Мб в размере? IMHO что-то в консерватории поправить надо, а не искать способ превратить MSSQL в файло-помойку
У нас на предприятии функционирует (где-то с 2011 года) система электронного документооборота, написаная нами (VFP9.0+MSSQL2005). В основном система предназначалась для разработки и хранения конструкторско-технологической документации. На сегодняшний день в системе работают и другие службы предприятия. Модуль "Редактор бланков" предусматривает при отправке готового документа на сервер, отправку и дбф-таблиц, которые используються редактором при работе именно с эти документом. Тоесть, когда закидывается документ, вместе с ним отправляется несколько служебных дбф-таблиц. Случилось отправлять документ в котором больше 10 тыс. строк, тут и получили мы эту ошибку. При замене драйвера SQL Server на SQL Server Native Client 11.0 проблема ушла. Но стало интересно, ради эксперимента попробовать загружать большие файлы, как пример взяли дбф. Вот такая предистория.
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
Есть желание попробовать отправить файл не из фокса, а например из MS Visual Studio (C или С#), чтоб исключить, что проблема не на стороне фокса, но опыта маловато. Если есть у кого примеры как это сделать, буду благодарен!
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
hztp_serg
Но стало интересно, ради эксперимента попробовать загружать большие файлы, как пример взяли дбф. Вот такая предистория.
1. У вас что-то творится в сети при передаче больших файлов и sql сервер тут не при делах.
2. Для работы с таким вещами в ms sql придуманы filestream и filetable.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
ssa
1. У вас что-то творится в сети при передаче больших файлов и sql сервер тут не при делах.

Скорее всего.

ssa
2. Для работы с таким вещами в ms sql придуманы filestream и filetable.

Для сервера

Цитата:
@@version возвращает:
Microsoft SQL Server 2005 - 9.00.5000.00 (Intel X86) Dec 10 2010 10:56:29 Copyright (c) 1988-2005 Microsoft Corporation Workgroup Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

Ещё не придуманы


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 2 раз(а). Последнее : PaulWist, 08.05.20 12:32
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
PaulWist
Для сервера
Ещё не придуманы
Ну так повод обновить. Уже почти десяток версий вышел.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
ssa
PaulWist
Для сервера
Ещё не придуманы
Ну так повод обновить. Уже почти десяток версий вышел.

Согласен. Для начала протестируем на пробной версии. А потом будим ставить перед фактом руководство.
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
Извините, но вопросы появляются по ходу. Есть процедура, которая подготавливает файл для отправки на сервер:
PROCEDURE ImageConvert
LPARAMETERS tcImage
CREATE CURSOR CurBlob (filebody BLOB)
SELECT CurBlob
APPEND BLANK
APPEND MEMO filebody FROM (tcImage)
RETURN CurBlob.filebody
ENDPROC
сокращённый вызов процедуры:
lwFilebody = ImageConvert(m.lcFile)
m.lcCommand = [EXEC DDOC..DocTmp_ins ] + NULLIF(m.lcFile) + [, ] + NULLIF(m.lcSqlDrv) + [, ?lwFilebody]
SQLEXEC(m.lnCon, m.lcCommand)
теперь тоже самое, только без процедуры:
CREATE CURSOR CurBlob (filebody BLOB)
SELECT CurBlob
APPEND BLANK
APPEND MEMO filebody FROM (m.lcFile)
m.lcCommand = [EXEC DDOC..DocTmp_ins ] + NULLIF(m.lcFile) + [, ] + NULLIF(m.lcSqlDrv) + [, ?CurBlob.filebody]
SQLEXEC(m.lnCon, m.lcCommand)
В результате на сервер получаю две записи, одного и того же файла, но с разным размером:

[attachment 33209 blob_to_image008.jpg]

В варианте через процедуру, я так понимаю, при передачи данных в переменную RETURN CurBlob.filebody идёт обрезка до 16777184 байт. В результате файл получается битый. Есть ли способ, вернуть данные с процедуры в переменную, без потери?
Реализация через процедуру обусловлена тем, что передача файла присутствует в нескольких местах программы. Если уже без вариантов, то придётся дублировать.
Ratings: 0 negative/0 positive
Re: Загрузка файлов на SQL (BLOB в IMAGE)
leonid

Сообщений: 3202
Откуда: Рига
Дата регистрации: 03.02.2006
Если Вы хотите использовать недокументированные фоксовские возможности, будьте готовы к тому, что будете налетать на подводные камни буквально в любом месте. Документированный максимальный размер строковой переменной - 16 Mb.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 15 Владимир Максимов  (Гостей: 14)

© 2000-2024 Fox Club 
Яндекс.Метрика