Firebird 2.5: неверный запрос BLR 623; LTRIM не определен; точка входа не найдена

Я совершенно не знаком с базой данных Firebird; Я работаю над уже существующей базой данных Firebird 2.5; Я извлекаю хранимые процедуры и представления (объекты базы данных) из этой базы данных для разработки отчетов в Microsoft SSRS. Я использую операционную систему Windows 7.

Иногда (не всегда) я получаю следующую ошибку при запуске некоторых хранимых процедур или представлений (объектов базы данных), которые используют функцию LTRIM:

не могу отформатировать сообщение 13:896 - файл сообщения C:Windows\firebird.msg не найден; недействительный запрос BLR по смещению 623; функция LTRIM не определена; имя модуля или точка входа не найдены; Ошибка при разборе процедуры XXXXXXX (имя хранимой_процедуры) ;

(Я получаю это как в IB Expert, так и в SSRS)

Это говорит о том, что я могу получить доступ к другим объектам базы данных, которые не используют функцию LTRIM!

Мой временный обходной путь:

Иногда я перезагружаю машину и могу запускать те же самые хранимые процедуры и представления, которые когда-то выдавали эту ошибку. В других случаях я перезапускаю машину пару раз и получаю доступ к этим представлениям и хранимым процедурам.

Иногда я много раз перезапускаю машину, но все еще не могу запускать объекты базы данных. Я расстраиваюсь и бросаю на день. Когда я открываю машину на следующее утро, я снова могу запускать эти объекты.

Что может быть причиной этого? И какое будет постоянное решение?

Эта база данных предоставляется моим клиентом, и я не должен ничего изменять (например, менять LTRIM на что-то другое). Я могу просто использовать существующие объекты для разработки отчетов.

Не могли бы вы сообщить мне, как проверить сервер, к которому я подключаюсь? Я использую IB Expert для открытия базы данных Firebird .fdb


person user3812887    schedule 29.09.2015    source источник
comment
Какую Firebird версию вы используете 32 или 64 битную? Если используется 64-битная, вы должны перекомпилировать rfunc.dll для 64-битной, потому что 32-битная dll не будет работать. Или, если вам нужно быстрое решение, установите 32-битную версию Firebird.   -  person Val Marinov    schedule 29.09.2015
comment
Для этой ошибки: не удается отформатировать сообщение 13:896 - файл сообщения C:Windows\firebird.msg не найден; просто скопируйте firebird.msgиз папки Firebird в папку Windows.   -  person Val Marinov    schedule 29.09.2015
comment
Я использую как 32-битный, так и 64-битный клиент; 32-разрядная версия, используемая для подключения к базе данных и приложению Delphi; 32-разрядная версия также используется для подключения SSDT в Microsoft SSRS; 64-разрядный клиент для подключения к диспетчеру отчетов Microsoft SSRS   -  person user3812887    schedule 29.09.2015
comment
Я только что скопировал и вставил firebird.msg в папку Windows;   -  person user3812887    schedule 29.09.2015
comment
Итак, Firebird SERVER 32-битный, верно? Почему вы используете 64-битный клиент?   -  person Val Marinov    schedule 29.09.2015
comment
Диспетчер отчетов SSRS, который подключается к базе данных Firebird через соединение ODBC, требует 64-разрядного клиента Firebird; однако SSDT SSRS, приложение Delphi, а также сервер Firebird используют только 32-разрядный клиент Firebird.   -  person user3812887    schedule 29.09.2015
comment
если вы видите установку базы данных Firebird, 32-битного клиента, .... все было сделано путем установки приложения Delphi   -  person user3812887    schedule 29.09.2015
comment
Я установил приложение Delphi, а также компоненты Firebird; позже, чтобы получить данные из Firebird, я установил IB Expert; Я имею в виду разработку отчетов с использованием существующих хранимых процедур и представлений.   -  person user3812887    schedule 29.09.2015
comment
Похоже, у меня есть 32-битные и 64-битные серверы Firebird; Я заметил папку Firebird в Program Files (x86), а также в Program Files   -  person user3812887    schedule 29.09.2015
comment
Что ж, удалите один из них :) Если вы хотите использовать 64-битную версию, вы можете скачать 64-битную версию rfunc.dll отсюда: sourceforge.net/projects/rfunc-64. Я не работал с этой библиотекой, так что пробуйте на свой страх и риск :)   -  person Val Marinov    schedule 29.09.2015
comment
Лучше отсюда: assembla.com/spaces/audfl_rfunc/wiki   -  person Val Marinov    schedule 29.09.2015
comment
@ValMarinov Вы используете 64-битную клиентскую библиотеку, когда ваше приложение 64-битное. Разрядность сервера и клиента не связаны, разрядность клиентской библиотеки должна соответствовать приложению.   -  person Mark Rotteveel    schedule 29.09.2015
comment
Вы уверены, что всегда подключаетесь к одному и тому же серверу Firebird? Похоже, вы иногда подключаетесь к одному, а другой раз к другому серверу Firebird.   -  person Mark Rotteveel    schedule 29.09.2015
comment
@MarkRotteveel Я ничего подобного не говорил. Я просто задаю вопросы, чтобы добраться до причины проблемы. И, как видите, мы нашли.   -  person Val Marinov    schedule 29.09.2015
comment
Я не понимаю разрядность приложения или сервера, эти жаргоны; У меня есть база данных .fdb; эта БД используется приложением Delphi; установка приложения Delphi создала 32-битный клиент Firebird в папке ProgramFiles(x86) с именем Firebird2_5; Теперь я использовал эту базу данных .fdb для разработки отчетов в SSRS 2012, используя соединение ODBC; SSRS состоит из 2 частей — SSDT и диспетчера отчетов; в то время как SSDT подключается к 32-битному клиенту Firebird, диспетчер отчетов — нет; в SSDT я использую 32-битное соединение ODBC, которое подключается к 32-битному клиенту;   -  person user3812887    schedule 30.09.2015
comment
Позже я самостоятельно установил 64-битный клиент Firebird и 64-битное соединение ODBC (в папке ProgramFiles), которое подключается к той же базе данных .fdb; это 64-разрядное соединение ODBC подключается к веб-браузеру диспетчера отчетов SSRS;   -  person user3812887    schedule 30.09.2015
comment
Теперь, чтобы получить данные из этой базы данных .fdb, я использую IBExpert, который подключается к этой базе данных .fdb, т. е. для разработки хранимых процедур и запросов с использованием существующих объектов БД (однако это только поиск данных — только SELECT; никаких манипуляций с данными)   -  person user3812887    schedule 30.09.2015
comment
У меня такое ощущение, что иногда я подключаюсь к 32-битному клиенту, а в других случаях я подключаюсь к 64-битному клиенту. Пожалуйста, дайте мне знать, не ошибаюсь ли я; Я не понимаю разницы между сервером и клиентом - этот жаргон мне не очень знаком   -  person user3812887    schedule 30.09.2015
comment
Теперь, как проверить, что я подключаюсь к серверу Firebird X или Y? Могу ли я сделать это из IBExpert? Является ли Firebird 32-битным или 64-битным приложением?   -  person user3812887    schedule 30.09.2015
comment
Проблема не в клиентской библиотеке. Ошибка возникает, когда подключен 64-битный СЕРВЕР, потому что он не может использовать 32-битный. Пользовательская функция «rfunc.dll». Просто удалите 64-битный сервер Firebird. Тогда всегда будет работать только 32 битный сервер. Оставьте клиентскую библиотеку как есть.   -  person Val Marinov    schedule 30.09.2015
comment
Как это сделать? Вы имеете в виду удаление 64-битного клиента Firebird? Я действительно не понимаю разницы между сервером и клиентом!!   -  person user3812887    schedule 30.09.2015
comment
Здравствуйте, Марк/Вэл. Не могли бы вы сообщить мне, как проверить сервер, к которому я подключаюсь? Я использую IB Expert для открытия базы данных Firebird .fdb   -  person user3812887    schedule 05.10.2015