![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO - большой файл(~184 Мб) в блоб [D7, MSSQL]
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]а маленькие грузятся?