TRemoteDBDatabase.Free leads to an AccessViolation.
Here is the Callstack leading to this error:
RemoteDB.Client.Database.TRemoteDBDatabase.StopKeepAlive
RemoteDB.Client.Database.TRemoteDBDatabase.DestroyDBInstance(True)
RemoteDB.Client.Database.TRemoteDBDatabase.DoDisconnect
RemoteDB.Client.Database.TRemoteDBDatabase.Destroy
Because you free FKeepAliveTimer before DoDisconnect is called.
StopKeepAlive tries to Update the Timer if ServerVersion >= 2 and mswindows is used...
If you would call DoDisconnect before FKeepAliveTimer.Free this would work fine.
(or you should FreeAndNil it and check if it's Assigned within StopKeepAlive)