Es relativamente sencillo. En el TZConnection que utilizas para hacer la conexión podrás ver que tiene las propiedades para indicar el host, usuario, passw y base de datos la que se va a conectar. Basta indicar en host la ip o dominio en donde esta corriendo el servidor y con eso puedes acceder de manera remota. UNicamente tienes que abrir el puerto 3306 (si usas el default de MySQL) de tu firewall para que permita tráfico externo. Ojala y pudieras poner un resumen de estas propiedades del TZConnection que utilizas. No entiendo bien como haces el acceso ahorita, realmente que haces con los túneles, utilizas tu programa alojado en el servidor?, o utilizas un cliente en cada terminal que se conecta?
Por otro lado como te mencionaba el problema de los "deadlocks" de las transacciones se dá si explícitamente las estás utilizando en tu programa, este sería un ejemplo correcto:
Código Delphi
[-]
Datos.InitTransaction; Try
Datos.Commit; except
Datos.RollBack; end;
Y esto nos produciría un deadlock:
Código Delphi
[-]
Datos.InitTransaction; Try
except
Datos.RollBack; end;
En el segundo si no hay error el rollback nunca se ejecuta y el servidor se queda indefinidamente esperando a que finalice esa transacción. Normalmente el efecto tarda a veces hasta varias horas en notarse. Lo notas porque el servidor empieza a mandar mensajes de error de que tiene bloqueada la tabla y no permite más acceso prácticamente a ninguna otra. Es decir, se paraliza totalmente hasta en tanto no mates la conexión que generó el deadlock.