Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
ВнизНе загружается BLOB из MS SQL... Из других СУБД - загружается! Найти похожие ветки
← →
Миха (2005-01-20 20:13) [0]Непонятный случай вышел с загрузкой поля BLOB из MSSQL.
Код следующий:
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add("SELECT * FROM mytable");
Open;
if Active then
begin
NRecs:=RecordCount;
First;
<...что-то делается...>
Close;
end;
end;
Код нормально работает, кроме ситуации, когда в таблице mytable присутствует поле типа BLOB (для MSSQL - типы image или text).
В этом случае RecordCount = -1 (!!!).
Active при этом - true!
Ситуация RecordCount=-1 недокументирована, что означает - непонятно.
Если убрать из таблицы BLOB-поле, то все Ok. Пробовал указывать имена столбцов - глючит, если присутствует имя именно BLOB-столбца.
Веселья прибавляет то, что этот глюк возникает на MSSQL, а на Interbase - нет.
Подробности: Delphi 6, MS SQL Server 2000 (пока что Evaluation 120-day, но не исчерпан), доступ через BDE, псевдонимы постоянные, все параметры в них стандартные.
Реально в таблице есть две записи.
Подозрения:
а) Что-то нужное не указано в параметрах псевдонима (вряд ли?)
б) Какая-то настройка MS SQL не так выставлена (знать бы какая)
в) Глюк BDE (на фиг бы его выкинуть, если бы был драйвер dbExpress, но увы...)
Люди, помогите советом или делом - запустите это код на своей платформе - какой будет результат?
← →
sniknik © (2005-01-20 20:29) [1]> запустите это код на своей платформе - какой будет результат?
и без запуска скажу, ошибка на операции
> <...что-то делается...>
;о))
> RecordCount = -1 (!!!).
нормальное явление для серверного курсора.
> MS SQL Server 2000 (пока что Evaluation 120-day, но не исчерпан), доступ через BDE
BDE поддерживает MS SQL только до версии 6,5 (насколько помнится ... посмотри там ридми с ним есть), интербейз, версия какая? менялось ли в нем чтото что ты используеш, в новых версиях, что точно изменилось в MS SQL?
для старших версий правильная работа естественно не гарантирована. (это так в общем, возможно к этой конкретной ошибке отношения не имеет)
переходи на ADO, там по крайней мере он (MS SQL) поддержан.
← →
sniknik © (2005-01-20 20:31) [2]MS SQL 2000 имеется ввиду естественно, в последней фразе.
← →
Миха (2005-01-20 20:48) [3]Спасибо за совет :-(
Итак, BDE не поддерживает MS SQL 2000!
Чудесно... Пошел вешаться... Или подождать, отговорят?
← →
sniknik © (2005-01-21 02:05) [4]файл bdereadme.txt
The following ODBC drivers are certified for use with BDE.
ODBC Driver Manager 3.5
-----------------------
Fully certified drivers:
ACCESS (Microsoft 3.40-Access 95 and 97)
FOXPRO (Microsoft 3.40)
MSSQL Server (Microsoft 3.00-Server version 6.5)
MSSQL Server (Intersolv 3.01-Server version 6.5)
ORACLE 7 (Intersolv 3.01-Server version 7.3)
Certified for basic functionality:
...
вешайся... или подожди...
тут же не написано что оно не работает, наоборот, работает .. с 6,5 и с 2000м будет, если не затронеш то чего нет/отлично в/от 6,5.
и еще вопрос от этого ли твоя ошибка.
← →
SLP © (2005-01-21 08:45) [5]Мне, примерно в такой же ситуации помогло, когда я поменяла в BDE Blob size. Для 2000-го MSSQL поставила 32, хотя для 6.5 стояло - 64.
← →
Ega23 © (2005-01-21 09:32) [6]Чудесно... Пошел вешаться... Или подождать, отговорят?
В настройках алиаса поиграйся с параметрами BlobSize и Blobs To Cashe.
← →
Миха (2005-01-21 10:49) [7]Поигрался - увеличение BLOB SIZE и BLOBS TO CASHE ничего не дает.
Неужели никто с MSSQL 2000 через BDE не работает?
Как-то не тянет перелезать на ADO - она же тормозная...
Кстати, еще глюк на той же платформе: из поля varchar(3000) или varbinary(3000) загружаются только первые 255 байт :-(
← →
Fay © (2005-01-21 10:54) [8]А мыши всё плакали, кололись....
← →
Ega23 © (2005-01-21 10:58) [9]Неужели никто с MSSQL 2000 через BDE не работает?
Я работаю.
Как-то не тянет перелезать на ADO - она же тормозная...
Иногда лучше жевать, чем говорить.
Кстати, еще глюк на той же платформе: из поля varchar(3000) или varbinary(3000) загружаются только первые 255 байт :-(
По-идее, всё, что больше 255 Grid как блоб воспринимает...
← →
sniknik © (2005-01-21 11:11) [10]> Как-то не тянет перелезать на ADO - она же тормозная...
вранье. те кто так говорит обычно не разобрались (не хотят) с настройками, в частности с клиентским/серверным курсором, в ADO много режимов в BDE один - серверный, настроенный на максимально быстрое открытие таблиц, в ADO по умолчанию клиентский настроен на максимальную независимость от сервера. (вот проверь "прогон" по рекордсету. в локальном ADO, будет на порядок быстрее, но поставь там тоже серверный курсор и скорости "выравняются" что при "прогоне" что при открытии)
2 Миха
терзают меня смутные сомнения... (про курсоры начал говорить, обмен впомнил... ;о))
в той таблице в которой "типы image или text" присутствуют, присутствуют какиенибудь другие поля? в частности ключевое?
← →
Миха © (2005-01-21 11:12) [11]Поздравляю, что BDE работает.
Может быть, пришлешь (можно в форум) параметры Alias?
А насчет 255 символов - Grig не причем, я проверяю DataSize у поля, то же и через AsString.
← →
Миха © (2005-01-21 11:16) [12]2 sniknik:
Ключевого поля в таблице нет
← →
Ega23 © (2005-01-21 11:25) [13]Поздравляю, что BDE работает.
Может быть, пришлешь (можно в форум) параметры Alias?
А насчет 255 символов - Grig не причем, я проверяю DataSize у поля, то же и через AsString.
Параметры алиаса - BlobSize=999
Больше ничего не меняю.
Что касается вопроса [0], то могу посоветовать: Запрос вида Select * from .... - ИМХО, дурной тон. Выбирай именно те поля, которые тебе нужны.
← →
Stanislav © (2005-01-21 11:39) [14]Если будешь продолжать работать через BDE это у тебя не единственная ошибка будет.
Не думаю что BDE быстрее ADO.
← →
sniknik © (2005-01-21 11:40) [15]> Ключевого поля в таблице нет
заведи, и проверь еще раз.
у тебя в таком случае нет однозначного идентификатора записи, в этом случае часто используется "сборка" всех полей, будут одинаковые будет ошибка "операция действует на слишком большое количество записей", при только "блобовских" полях даже не знаю что будет, возможно попытка идентификации по "заголовкам" они везде одинаковые или по содержанию оно слишком большое... и то и то нехорошо.
в сравниваемом тобой интербейсе есть внутренний код записи, возможно (скорее всего) он используется при идентификации записи и ошибки не возникает, при аналогичной структуре таблици... (внутреннее устройство не то ;о))
← →
Миха © (2005-01-21 12:47) [16]Увы, не помогло ни BlobSize=999, ни ключевое поле (ADD id NOT NULL IDENTITY PRIMARY KEY)
← →
sniknik © (2005-01-21 13:16) [17]> ни ключевое поле (ADD id NOT NULL IDENTITY PRIMARY KEY)
The definition for column "id" must include a data type
← →
Миха © (2005-01-21 13:21) [18]Ну естественно, забыл int:
ADD id int NOT NULL IDENTITY PRIMARY KEY
Но проблема не здесь...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.044 c