Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADO - большой файл(~184 Мб) в блоб [D7, MSSQL]


Страницы:   1 2

Gin2 ©   (2007-02-09 15:55:00) 

Мастера, загружаю в базу файл:

...
 if not OpenDialog1.Execute() then
 begin
   Exit;
 end;
 ADOCommand1.Parameters.ParamByName('FileData').LoadFromFile(OpenDialog1.FileName , ftVarBytes);
 ADOCommand1.Execute();
...

СУБД - MSQL 2000 SP4+hot fixes. D7. Вываливается ошибка -

Project Project1.exe raised exception class EOleException with message 'Неопознанная ошибка'. Process stopped. Use Step or Run to continue.

Кто борол?


sniknik   (2007-02-09 16:40:00) [21]

счас проверю
пока тоже проверь, ftVarBytes на ftBlob поменяй.


Ega23   (2007-02-09 16:34:00) [22]

bcp /?


Gin2   (2007-02-09 16:34:00) [23]


> sniknik ©   (09.02.07 16:31) [15]

ADOConnection1:

 object ADOConnection1: TADOConnection
   CommandTimeout = 0
   Connected = True
   ConnectionString =
     'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initi' +
     'al Catalog=Test
   LoginPrompt = False
   Provider = 'SQLOLEDB.1'
   Left = 80
   Top = 32
 end

ADOCommand1:

 object ADOCommand1: TADOCommand
   CommandText =
     'update [Table]'#13#10'set [FileData] = :FileData'#13#10'where [id] = N'#39'1' +
     '70DF0F5-D54C-4B6D-BBDB-A30E8DFD684F'#39
   CommandTimeout = 0
   Connection = ADOConnection1
   Parameters = <
     item
       Name = 'FileData'
       Attributes = [paNullable, paLong]
       DataType = ftVarBytes
       NumericScale = 255
       Precision = 255
       Size = 2147483647
       Value = Null
     end>
   Left = 184
   Top = 48
 end


sniknik   (2007-02-09 16:31:00) [24]

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

нет, твой огрызок кода/описания тянет только на "чуть чуть больше чем ничего. и явно ничего полезного".

да еще напомнил, ошибка "Неопознанная ошибка"  ничего не говорящая, попробуй из коллекции ADOConnection.Errors вытащить, может там понятнее будет.


Gin2   (2007-02-09 16:29:00) [25]


> sniknik ©   (09.02.07 16:26) [12]

ОЗУ - 1Гб, ОС - ХР СП2.
я процессы смотрел он до пика не доходит. Всего под виртуальную выделено 2,4 Гб.


Gin2   (2007-02-09 16:28:00) [26]


>  ADOCommand1.Parameters.ParamByName('FileData').LoadFromFile(OpenDialog1.
> FileName , ftVarBytes);
>  ADOCommand1.Execute();

смотрю профайлером:

exec sp_executesql N'update [Table]
set [FileData] = @P1
where [id] = N''170DF0F5-D54C-4B6D-BBDB-A30E8DFD684F''', N'@P1 image', 0x

Интересно а как блоб поле ушло? чего его не видно? 0х и все... Хотя в базу файл лег - 100 Мб.


Gin2   (2007-02-09 16:26:00) [27]


> sniknik ©   (09.02.07 16:22) [9]

чистее некуда, вот то что я привел в первом посте.


sniknik   (2007-02-09 16:26:00) [28]

кстати сколько памяти на компе? (у меня 2гб но и меньше должно хватать...)


Desdechado   (2007-02-09 16:24:00) [29]

> На этапе загрузки в болб-поле память жрется, процессор 100%, и висим..
Натурально. Ты же в датасет загоняешь...


sniknik   (2007-02-09 16:22:00) [30]

Alarm ©   (09.02.07 16:01) [3]
это к чему? хорошенький подход... "не получилось ездить на велосипеде, бросай, садись на мотоцикл... облом с ним, нафиг его, иди в летчики! и т.д. гденибудь да получится".

Gin2   (09.02.07 15:55)
> Кто борол?
а надо? наверняка проблема не в дельфи/mssql а в твоем коде. (тут както была тема аналогичная, только цифра там была поскромнее, вроде 64мг, так для проверки тогда загрузил файл в 10 раз больший 640мг. "проблема" не подтвердилась. счас проверять не буду. сам тщательнее проверь/проверки сделай, может вынести код загрузки в "чистое" приложение и т.д.)


Gin2   (2007-02-09 16:21:00) [31]

Попробовал так сказать другой подход:

...
 if not OpenDialog1.Execute() then
 begin
   Exit;
 end;
 ADODataSet1.Open();
 ADODataSet1.Edit();
 TBLOBField(ADODataSet1.FieldByName('FileData')).LoadFromFile(OpenDialog1.FileNam e);
 ADODataSet1.Post();
...

теперь и маленькие файлы(80 Мб) не грузит. На этапе загрузки в болб-поле память жрется, процессор 100%, и висим...До поста даже не доходит, такое ощущение что в память сует весь файл.


Gin2   (2007-02-09 16:13:00) [32]


> Alarm ©   (09.02.07 16:11) [6]

какая разница?
ну допустим архив чего-то там. придумайте.


Alarm   (2007-02-09 16:11:00) [33]

В принципе, конечно, согласен. Смущают размеры (объемы). Чем это могло бы быть (184Мгб). Попробую у себя,а потом отвечу


alex_***   (2007-02-09 16:09:00) [34]

я то же что-то не понял. Не будет ли любезен товарищ сразить нас наповал своими знаниями


Gin2   (2007-02-09 16:07:00) [35]


> Alarm ©   (09.02.07 16:01) [3]

не понял.
ADO родное для MS SQL...


Alarm   (2007-02-09 16:01:00) [36]

а ума хватает сменить технологию. (Уже даже не спрашиваю о БД...) Не приходило ли на "интуицию" сменить подход к решению задачи ...


Gin2   (2007-02-09 15:57:00) [37]

да, пробовал 80 МБ - все ок. Место на диске есть - 8 Гб.


alex_***   (2007-02-09 15:56:00) [38]

а маленькие грузятся?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо