Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-1106220984
Layner
2005-01-20 14:36
2005.02.20
Разделители дроби в MSSQL на сервере и разделитель на клиенте


3-1106229162
EthernalWonderer
2005-01-20 16:52
2005.02.20
TopRow в DBGrid


6-1102174721
Linker
2004-12-04 18:38
2005.02.20
TAPI


3-1106570380
АМБ
2005-01-24 15:39
2005.02.20
Необходим SQL-запрос для выборки из нескольких DBF-таблиц


4-1103890085
serguar
2004-12-24 15:08
2005.02.20
запись в реестр Windows 2K под простым юзером





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский