Консольное приложение .NET с клиентом Firebird аварийно завершает работу в конце программы

Это небольшой проект для друга, целью которого является чтение данных из заданного файла базы данных Firebird и помещение их в шаблоны MS Office 2010... так что и Firebird как серверная часть базы данных, и офис типа проекта .NET 4.x что-то данный стек.

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FirebirdSql.Data.FirebirdClient;

namespace TestFirebirdConnection
{
    class Program
    {
        static void Main(string[] args)
        {
            // Set the ServerType to 1 for connect to the embedded server
            string connectionString =
            "User=sysdba;" +
            "Password=******;" +
            "Database=C:\\...\\...\\...\\PDATA.FDB;" +
            "ServerType=1;" +
            "Charset=NONE;";

            try
            {
                FbConnection dbConnection = new FbConnection(connectionString);

                dbConnection.Open();

                string SQLCommandText = "select * from Patients";

                FbCommand dbCommand = new FbCommand(SQLCommandText, dbConnection);

                FbDataReader dr = dbCommand.ExecuteReader();

                while (dr.Read())  
                {
                    Console.WriteLine(dr["TITLE"] + " " + dr["SURNAME"] + " " + dr["NAME"]);

                }

                dr.Close();
                dbConnection.Close();

            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}

Все работает нормально, код выводит все имена из базы данных пациентов в оболочку. Я уже использовал отладчик, чтобы проверить, правильно ли закрыто () устройство чтения данных и dbConnection, что так и есть.

После самой последней строки я каждый раз получаю неприятное сообщение об ошибке Windows (такое нарушение доступа к памяти), где я не могу понять, почему это происходит.

ОБНОВЛЕНИЕ: похоже, это связано с fbintl.dll

ОБНОВЛЕНИЕ 2: этого не происходит, если я подключаюсь к серверу firebird (что, к сожалению, не является хорошим решением для моего легкого проекта офисного шаблона)

Кто-нибудь знает, почему это происходит?

Я использую:

  • Поставщик Firebird ADO.NET 4.6 (из NuGet)
  • Встроенная база данных Firebird 2.5.3 x64

На самом деле я не уверен, с какой версией firebird был создан файл базы данных.


person Jürgen Zornig    schedule 27.02.2015    source источник
comment
И какое конкретно сообщение об ошибке?   -  person Steve    schedule 28.02.2015
comment
vshost.exe перестал работать, когда я запускаю его в VS2013, а TestFirebirdConnection.exe перестал работать, когда я запускаю его из оболочки cmd. Я решил прикрепить к нему отладчик, а затем после сбоя (в VS отладчик также разбился вместе с ним), который сообщает мне, что необработанное исключение по адресу 0x000000001BBE0650 (fbintl.dll) в TestFirebirdConnection.exe: 0xC0000005: местоположение чтения нарушения доступа 0x000000001BB5DEF0. ... не очень полезно для меня, так как я не могу найти ничего по этой проблеме в сети.   -  person Jürgen Zornig    schedule 28.02.2015
comment
Происходит ли это, если вы подключаетесь к серверу Firebird вместо встроенного Firebird?   -  person Mark Rotteveel    schedule 28.02.2015
comment
Нет, тогда приложение закрывается без сообщения об ошибке. Тем не менее, я хочу использовать встроенный, так как это будет просто офисный шаблон, для которого я не хочу устанавливать сервер Firebird на целевой машине. Есть ли у тебя шанс заставить это работать со встроенными?   -  person Jürgen Zornig    schedule 28.02.2015
comment
захватите аварийный дамп (полный дамп памяти) с помощью procdump (запустите procdump -ma -i C:\dumps, чтобы зарегистрировать procdump ast post mortem ebugger, теперь запустите свой инструмент), загрузите отладочную версию встроенного FB, извлеките PDB из zip и добавьте путь к PDB в настройки Windbg (D:\symbols\Firebird;srvD:\symbols\Microsoftmsdl.microsoft.com/download/symbols);. Теперь запустите !analyze -v, скопируйте/вставьте вывод сюда.   -  person magicandre1981    schedule 01.03.2015
comment
Это исправлено? Если нет, попробуйте firebird 2.5.4 и .net provider 4.6.2.   -  person magicandre1981    schedule 17.04.2015
comment
У меня точно такая же проблема. Вы исправили это?   -  person jacktric    schedule 16.04.2018