Копаю в сторону TIBConnectionbroker, но не могу понять как правильно организовать работу. Приложение консольное.
Приведу несколько строк из кода.
Само приложение:
program main;
{$APPTYPE CONSOLE}
uses
  IBX.IBConnectionBroker,
  MyThread in 'MyThread.pas';
var
  Thread1, Thread2: TMyThread;
  ConnectionBroker: TIBConnectionBroker;
begin
  ConnectionBroker:=TIBConnectionBroker.Create(nil);
  ConnectionBroker.DatabaseName:='C:\DataBase.fdb';
  ConnectionBroker.Params.Clear;
  ConnectionBroker.Params.Add('user_name=SYSDBA');
  ConnectionBroker.Params.Add('password=masterkey');
  Thread1:=TMyThread.Create(True);
  Thread1.fBroker:=ConnectionBroker;
  Thread1.Resume;
  Thread2:=TMyThread.Create(True);
  Thread2.fBroker:=ConnectionBroker;
  Thread2.Resume;
end;
Модуль потока:
unite MyThread;
interface
uses
  IBDatabase,
  IBCustomDataSet,
  IBX.IBConnectionBroker;
type
  TMyThread = class(TThread)
  private
    fDataBase: TIBDatabase;
    fTransaction: TIBTransaction;
    fDataSet: TIBDataSet;
  protected
    procedure Execute; override;
  published
    fBroker: TIBConnectionBroker;
  end;
implementation
procedure TMyThread.Execute;
begin
  fDatabase:=fBroker.GetConnection; // Тут вылетает Exception class $C0000005 with message 'access violation at 0x0069dc06: read of address 0x00000000'
  
  fTransaction:=TIBTransaction.Create(nil);
  fTransaction.DefaultDatabase:=fDataBase;
  fDataSet:=TIBDataSet.Create(nil);
  fDataSet.Database:=fDataBase;
  fDataSet.Transaction:=fTransaction;
end;
Сам понять это не в силах. Надеюсь на общественный интеллект.