Mais uma "descoberta" que talvez lhe tenha utilidade.
O caso é que em programas multi thread, se a thread for utilizar uma conexão DBExpress, é necessário chamar o CoInitialize(nil) e CoUninitialize.
No mínimo suas mensagens de erro em relação ao banco melhorarão uma vez que a mensagem abaixo não significa nada:
OLE DB error occured. Code 800401F0h.
CoInitialize has not been called.
Ao passo que a mensagem abaixo fica beeeeem mais clara:
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server inexistente ou acesso negado.
http://support.codegear.com/br/article/37092