How to stop a single Progress OpenEdge server process and not the whole database

progress-database

Is there a way to stop a single _mprosrv process started by the database broker? All I can find from documentation and google searches are ways to disconnect a single user connection or shut down the entire database.

For context, the problem is, that we are running an OpenEdge 10.2 database, that is mostly used by remote 4GL clients and one singular client using SQL over ODBC to run data export queries once a week. After rebooting the entire server in our current configuration, the database started up and broker spawned _mprosrv server processes up to the maximum number of servers allowed for the broker. Therefore it can't start up a _sqlsrv2 process any more, because all the slots are occupied. Even during low usage periods where no remote 4GL clients are connected, the ODBC connection does not succeed, since the idle servers are not shut down to allow new servers to be spawned.

Hence the question – can I shut down a single 4GL server process to trigger a new server creation for SQL connections without taking the entire database and application offline?

Best Answer

After googling around some more with different queries, I found my answer from the Progress Knowledge Base after all.

First of all, it turns out that indeed, the remote server processes by default stay active until database shutdown happens. So if all the slots are occupied by 4GL servers, they will not open up a slot for a SQL server by themselves.

However, the PROMON utility has commands to terminate specific server processes gracefully to free up server slots. The sequence of commands is as follows from the PROMON main menu:

  • R&D for Advanced options
  • 4 for Administrative functions
  • 7 for Server options
  • 7 for Terminate a server

From the server list find the server ID that needs to be terminated and type it in. After issuing the command, using the R option to refresh the screen the terminated server ID should show up as inactive.

After terminating a server, a new SQL server should be spawned if an ODBC connection to the system is initiated.

On Windows you might need to use a local user account, that is in the Administrators group. Domain users belonging to Administrators group are not allowed to terminate servers.

Sources:

  1. Background information how remote servers are handled
  2. Instructions on how to terminate a single server process
  3. Information on how domain administrator accounts are handled on Windows