Служба индексирования Microsoft Cisso.dll - библиотека взаимодействия: верхний предел 4-байтовых целых - PullRequest
1 голос
/ 01 февраля 2011

Этот вопрос использует Microsoft Службы индексирования ( Диалект 2 ) и Интерфейс IixssoQuery из библиотеки взаимодействия Cisso.dll из программы на C # / .NET.

В нашем индексе есть столбцы, определенные как тип данных vt_i8 (8 байт), однако метод CreateRecordSet библиотеки взаимодействия всегда возвращает RecordSetс числовыми столбцами из 4-х байтовых целых, усекающими все, что превышает предел диапазона в 2 147 483 648.

В идеале нам нужно извлечь C # long System.Int64 (8 байт) вместо C # int System.Int32 (4 байт) из библиотеки взаимодействия.

Следующий пример кода(в основном предоставляется для пробежек) использует Cisso.dll для получения набора записей и заполнения DataTable, возвращая данные с усеченными целыми числами.

CissoQueryClass cqc = new Cisso.CissoQueryClass();
RecordSet rs = new RecordSet();
cqc.Columns = "Rank, DocTitle, VPath, Filename, Characterization,Write";
// ... setup ...
var myDs = new DataSet();
oldDbAdapter.Fill(myDs, cqc.CreateRecordSet("nonsequential"), "IXResults");
return myDs;

Мы попробовали cqc. DefineColumn(..) метод, игра с типами данных и т. Д., Но безрезультатно - не наблюдается никаких изменений в поведении усеченных целых чисел.

Я хочу знать, является ли это целочисленное усечение ограничением библиотеки взаимодействия CISSO или можно извлечь из него большие целочисленные значения, а мы просто не знаем, как это сделать?

Я уверен, что кто-то здесь столкнулся с подобной проблемой.Поиск в интернете на этот раз очень мал по деталям.


Мы нашли обходной путь, основанный на данных внутри индекса: мы можем извлечь то, что нам нужно, из другого строкового поля и проанализировать число из него.Не идеальный, но обходной путь.

1 Ответ

0 голосов
/ 09 марта 2011

Да, я застрял, как и вы. Кажется, что максимальная длина столбца OLE DB равна ULONG для 32-битного (oledb.h), но реализация ixsso обрабатывается как подписанная. Сначала я подумал, что могу получить схемы таблиц, смонтировав источник данных в соединениях с базой данных VS. Именно тогда я обнаружил «пользовательские» возможности поиска. Так много для этого маршрута.

Затем я попытался перейти к реализации .net RCW, но не смог найти символы отладки для ixsso.dll, поэтому не смог получить достаточно маленький блок asm для диагностики.

Наилучшим предположением является то, что функциональность DefineColumns (необработанный интерфейс COM) ограничивает значение базовым хранилищем схемы, и с этим ничего нельзя поделать. Это то, что вы уже поняли, и по тем же причинам.

Удачи. Извините, мы не смогли взломать это. Я рад, что это обесценилось, хотя ....

...