Ошибка FirebirdSql при входе в систему, подробности см. в журнале firebird.log сервера.

Я пытаюсь подключиться и прочитать данные из базы данных Firebird, используя поставщика FirebirdSQL .net (используя FirebirdSql.Data.FirebirdClient). Вот код:

FbConnection viewdataConnection=new FbConnection();
viewdataConnection.ConnectionString = "database=localhost:c:\\firebirdTest\\testDB.fdb;user=sysdba;password=firebird";
viewdataConnection.Open();

При попытке открыть () соединение я получаю сообщение об ошибке:

An unhandled exception of type 'FirebirdSql.Data.FirebirdClient.FbException' occurred in FirebirdSql.Data.FirebirdClient.dll
Additional information: Error occurred during login, please check server firebird.log for details

Вот детали исключения:

FirebirdSql.Data.FirebirdClient.FbException was unhandled
  ErrorCode=335545106
  HResult=-2147467259
  Message=Error occurred during login, please check server firebird.log for details
  SQLSTATE=08006
  Source=FirebirdSql.Data.FirebirdClient
  StackTrace:
       at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect()
       at FirebirdSql.Data.FirebirdClient.FbConnectionPoolManager.Pool.CreateNewConnectionIfPossibleImpl(FbConnectionString connectionString)
       at FirebirdSql.Data.FirebirdClient.FbConnectionPoolManager.Pool.GetConnection(FbConnection owner)
       at FirebirdSql.Data.FirebirdClient.FbConnection.Open()
       at UsingFirebird.FormUsers.FormUsersLoad(Object sender, EventArgs e) in C:\Users\vikas\Downloads\UsingFirebird\UsingFirebird\UsingFirebird\FormUsers.cs:line 46
       at System.Windows.Forms.Form.OnLoad(EventArgs e)
       at System.Windows.Forms.Form.OnCreateControl()
       at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       at System.Windows.Forms.Control.CreateControl()
       at System.Windows.Forms.Control.WmShowWindow(Message& m)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.Form.WmShowWindow(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
  InnerException: 
       ErrorCode=335545106
       HResult=-2146233088
       IsWarning=false
       Message=Error occurred during login, please check server firebird.log for details
       SQLSTATE=08006
       Source=FirebirdSql.Data.FirebirdClient
       StackTrace:
            at FirebirdSql.Data.Client.Managed.GdsConnection.Identify(String database)
            at FirebirdSql.Data.FirebirdClient.ClientFactory.CreateManagedDatabase(FbConnectionString options)
            at FirebirdSql.Data.FirebirdClient.ClientFactory.CreateDatabase(FbConnectionString options)
            at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect()
       InnerException: 

Пожалуйста помоги.


person Vikas Kottari    schedule 09.07.2019    source источник
comment
Что за ошибка в firebird.log сервера?   -  person Mark Rotteveel    schedule 09.07.2019
comment
@MarkRotteveel Я не могу найти файл firebird.log.   -  person Vikas Kottari    schedule 09.07.2019
comment
Обычно он находится в корневом каталоге установки вашего сервера Firebird.   -  person Mark Rotteveel    schedule 09.07.2019
comment
@MarkRotteveel такого файла нет в корневом каталоге, я также искал firebird.log на этом компьютере. - файл не найден.   -  person Vikas Kottari    schedule 09.07.2019
comment
Под корневым каталогом я подразумеваю место установки Firebird (например, C:\Program Files\Firebird\Firebird_3 или аналогичный). В любом случае, без этой записи в журнале трудно понять, в чем проблема, возможно, это что-то вроде Произошла ошибка при входе в систему, подробности см. в файле firebird.log сервера (335545106). Это может указывать на то, что вы используете старую версию провайдера Firebird ado.net (версия 4.x или старше).   -  person Mark Rotteveel    schedule 09.07.2019
comment
@MarkRotteveel нет файла с именем firebird.log в C:\Program Files\Firebird\Firebird_3_0, также версия провайдера Firebird .net, которую я использую, - 6.6   -  person Vikas Kottari    schedule 09.07.2019
comment
Какова ваша настройка AuthServer (в firebird.conf)? Это также может означать, что AuthServer=Legacy_Auth, в то время как Firebird ado.net 6.6 поддерживает только Srp при подключении к Firebird 3.   -  person Mark Rotteveel    schedule 09.07.2019
comment
Интересно, он тогда использует встроенный сервер, и его приложение не имеет прав на запись в Program Files и вместо этого пишет в Virtual Storage... Или, может быть, это какой-то сломанный триггер OnConnect?   -  person Arioch 'The    schedule 09.07.2019
comment
@MarkRotteveel #AuthServer = Srp, это настройка по умолчанию.   -  person Vikas Kottari    schedule 09.07.2019
comment
Вы запускаете Firebird как службу или запускаете ее вручную как приложение?   -  person Mark Rotteveel    schedule 09.07.2019
comment
@Arioch'The Это тоже может быть возможно.   -  person Mark Rotteveel    schedule 09.07.2019
comment
@Arioch'Я дал разрешение, эта ошибка исчезла, спасибо. однако я получаю другую ошибку: ошибка ввода-вывода во время операции CreateFile (открытия) для файла C:\FIREBIRDDB\TEST.FDB, моя строка подключения: database=localhost:C:\\FirebirdDB\\test.fdb;user =sysdba;password=firebird;, я дал разрешение на запись в test.fdb.   -  person Vikas Kottari    schedule 09.07.2019
comment
Я переместил свою базу данных в папку установки firebird (по умолчанию), и теперь мой код работает, спасибо обоим.   -  person Vikas Kottari    schedule 09.07.2019
comment
@MarkRotteveel, так как его второй сценарий подключения включает локальный хост: он должен упасть на автономный сервер с TCP-подключением, а не на встроенный, но он всегда шаткий в FB3 после ясности FB2/Win   -  person Arioch 'The    schedule 09.07.2019


Ответы (2)


Если вам нужно запустить сервер Firebird в режиме приложения, запустите его от имени администратора.

Это решило проблему для меня. Серверу Firebird требуется доступ для записи к некоторым файлам в папке установки.

person maf-soft    schedule 27.09.2020

Я решил эту проблему с помощью комментариев выше. Были предприняты шаги по устранению:

  1. Обновлен WireCrypt = Enabled в файле Firebird.conf< /а>
  2. Предоставьте права на чтение и запись всем пакетам приложений в папку установки Firebird (C:\Program Files\Firebird\Firebird
    using (var connection = new FbConnection("database=localhost:test.fdb;user=sysdba;password=masterkey;Charset=NONE;"))
    {
        connection.Open();
        using (var transaction = connection.BeginTransaction())
        {
            using (var command = new FbCommand("select * from testTable", connection, transaction))
            {
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        var values = new object[reader.FieldCount];
                        reader.GetValues(values);
                        Console.WriteLine(string.Join("|", values));
                    }
                }
            }
        }
    }
    
    0
    )
  3. У меня была моя база данных в папке C:\FirebirdDb, я удалил эту БД и создал новую БД в месте по умолчанию (то есть в папке установки Firebird).

И вот мой код:

using (var connection = new FbConnection("database=localhost:test.fdb;user=sysdba;password=masterkey;Charset=NONE;"))
{
    connection.Open();
    using (var transaction = connection.BeginTransaction())
    {
        using (var command = new FbCommand("select * from testTable", connection, transaction))
        {
            using (var reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    var values = new object[reader.FieldCount];
                    reader.GetValues(values);
                    Console.WriteLine(string.Join("|", values));
                }
            }
        }
    }
}
person Vikas Kottari    schedule 09.07.2019
comment
чтение-запись мирового уровня в Program Files — плохая идея с точки зрения безопасности. Антивирус может сойти с ума. Возможно, вам нужно было проанализировать 1) какой ПОЛЬЗОВАТЕЛЬ запускает процесс FB3 (по умолчанию он был LOCAL_SYSTEM для FB2, но, возможно, был изменен для FB3) 2) предоставить этому пользователю гранты для целевой папки базы данных. В качестве альтернативы 3) внимательно прочитайте весь файл firebird.conf, возможно, FB3 теперь имеет явную конфигурацию, в которой он может или не может создавать базы данных. В духе белых списков папок UDF и External Tables, которые уже были в firebird.conf FB2. - person Arioch 'The; 09.07.2019
comment
Это плохая идея, не делайте этого. Запустите Firebird как службу (установка службы по умолчанию, выполняемая установщиком Firebird, должна иметь достаточные права) или установите ее вне Program Files. Файлы базы данных не принадлежат папке Program Files. - person Mark Rotteveel; 09.07.2019