Difference between Scheduled agent and agent.RunOnServer()?

I have a LS agent that connects via ODBC to DB2 on our mainframe system and inserts a record.

If I schedule this agent, it runs fine: connects, inserts row, disconnects. Clean and simple.

If I try to invoke the same agent via RunOnServer() method from a UI in the Notes client, the agent executes up to the point of connecting to DB2 and then hangs forcing me to restart my Notes client.

The signer of the agent does not change.

Is there any difference in the two execution methods?

We want to be able to DB2 operations without having to install ODBC drivers on every potential users desktop PC. We just want to use the ODBC definition/driver on the server.

Thanks.