COM InProcServer для MSSQL

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Re: COM InProcServer для MSSQL

Сообщение Дед Пахом »

Конечно, все замечания я предложения будут рассмотрены, ошибки пофиксены.
С уважением, ДП
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: COM InProcServer для MSSQL

Сообщение WadimZapara »

Провёл тест создания таблицы в MSSQL по описанию DAT-файла и переноса данных из DAT-файла в созданную таблицу.
Всё в скрипте MSSQL (написав ряд stored procedures) - всё через sp_OACreate, sp_OAMethod используя COM-объект.
Работает нормально, хотя и не скажу, что быстро.
Время потраченное на то, чтобы загнать 24509 записей (размер RECORD - 207, MEMO - 300) составило от 5 до 12 минут (файлы на удалённом файл-сервере).
При том, что чтение велось по одному полю из 22 (не RECORD и не GROUP, с ними полей 27) .

То есть, с внесёнными изменениями (какие писал ранее) - всё работает.

ЗЫ: оставшиеся у меня 2 проблемы не мешают:
1. провожу сборку с именем DllCanUnloadNoV, утилитой заменяю на автомате в готовом DLL буковку V на w.
2. внутри всех методов, кроме стандартных для IDispath, ADDRESS(SELF) смещён на 4 байта, как обманул - писал ранее.

ЗЗЫ: Над этим (2) уже всю голову сломал...
Последний раз редактировалось WadimZapara 22 Февраль 2012, 22:45, всего редактировалось 1 раз.
Компьютер имеет то преимущество перед мозгом, что им пользуются...
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Re: COM InProcServer для MSSQL

Сообщение Дед Пахом »

У меня T-SQL по-прежнему не работает. Может что ещё надо включить кроме

Код: Выделить всё

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
С уважением, ДП
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: COM InProcServer для MSSQL

Сообщение WadimZapara »

1. У меня MSSQL-2000 Enerprise Edition (8.00.2039, SP-4), особых настроек не делал никаких.
2. Если обновил DLL и не перезапускал MSSQL - работать не будет, т.к. у него в памяти после ошибки осталась прежняя копия.
3. Если не исправить на *LONG здесь и в прототипе IDISPATCH - работать не будет

Код: Выделить всё

ClarionFile                     CLASS,IMPLEMENTS(IClarionFile),TYPE
...
GetTypeInfo                       PROCEDURE(LONG iTInfo,LONG lcid,*LONG ppTInfo),HRESULT
...
                                END
4. Думаю, необходимо и в CreateInstance фабрики дать отказ в инкапсуляции

Код: Выделить всё

ClarionFileCF.CreateInstance                PROCEDURE(LONG pUnkOuter,LONG riid,*LONG ppvObject)
pClarionFile                    &ClarionFile
hr                              HRESULT
CLASS_E_NOAGGREGATION   EQUATE(80040110h)
  CODE
  ppvObject=0
  IF pUnkOuter THEN RETURN CLASS_E_NOAGGREGATION.
  pClarionFile &= NEW(ClarionFile);  IF (pClarionFile &= NULL) THEN RETURN E_OUTOFMEMORY.
  hr = pClarionFile.QueryInterface(riid,ppvObject);  IF hr <> S_OK THEN DISPOSE(pClarionFile).
  RETURN hr
MSSQL-2003, 2008 не юзаю, подозреваю, там что-то надо включить
Компьютер имеет то преимущество перед мозгом, что им пользуются...
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Re: COM InProcServer для MSSQL

Сообщение Дед Пахом »

Да, я всё это внёс, тем не менее не фурычит. MSSQL 2008 R2. Может кинешь мне свою dll (заведомо рабочую), я у себя попробую - заработает, значит у меня кривизна, нет, значит в MSSQL (что скорее :-))
С уважением, ДП
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: COM InProcServer для MSSQL

Сообщение WadimZapara »

полетела...
Компьютер имеет то преимущество перед мозгом, что им пользуются...
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: COM InProcServer для MSSQL

Сообщение WadimZapara »

Так, заработало - и в T-SQL через spOA... ?
Компьютер имеет то преимущество перед мозгом, что им пользуются...
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Re: COM InProcServer для MSSQL

Сообщение Дед Пахом »

Да, в T-SQL и проверял (у меня Excel-я нет :-)). Немного доведу до ума с генерацией под C55 и выпущу новый релиз.
С уважением, ДП
Ответить