DataServer.ini

Primary configuration file for DataServer. All keys live under a single [DataServerInfo] section.

File Location#

DataServer/DataServer.ini

Loaded once at startup. Changes require a DataServer restart.

Configuration#

All keys belong to section [DataServerInfo].

KeyTypeDefaultEffect
DataServerODBCstring(empty)ODBC DSN name for SQL Server. Must exist in Windows ODBC Data Sources on the DataServer host. Required.
DataServerUSERstring(empty)SQL login user. Leave empty to use Windows Authentication if the DSN is configured for it.
DataServerPASSstring(empty)SQL login password. Leave empty when using Windows Authentication.
DataServerPortint55960TCP port GameServers connect to. Must match each GameServer's DataServer port setting.
AdvancedLog0 or 10Enables verbose per-packet logging on both inter-server dispatchers (GS-DS and the extended guild/castle/gens channel). Noisy; use only when diagnosing a specific issue.
LicenseKeystring(empty)64-char hex license token tied to this DataServer instance. Required; empty or invalid prevents startup.
ControlPortint55991TCP port for the Axiom Server Manager control channel (status, logs, commands, graceful shutdown). 0 = off.
ControlKeystring(empty)Shared password for the control channel. Must match this instance's ControlKey in the Server Manager. Empty = no password.
ControlBindIP127.0.0.1Address the control channel listens on. 127.0.0.1 = only this machine can connect. Not in the shipped file; add the line to change it.
ControlInstancestring(empty)Label shown in the Server Manager to tell instances apart. Not in the shipped file; add the line to set it.

Database Schema Check#

At startup DataServer reads the highest Id in table dbo.AxiomSchemaVersion. If the table is missing, or the highest Id is below 2, DataServer logs [Schema] NOT STARTING, closes its SQL connections and does not open DataServerPort. GameServers cannot connect.

Fix: run the update from the Axiom Server Manager, or run the numbered scripts from the server package's migrations folder (the log message calls it SQL\Migrations; files 0001_*.sql, 0002_*.sql, ...) in order against the MuOnline database. Then restart DataServer.

Connection Pool#

DataServer opens the primary connection plus 4 pool connections, all using the same DSN and credentials. The pool size is fixed at compile time and not configurable via the INI.

Implications for SQL Server sizing:

  • Each DataServer consumes 5 concurrent SQL logins
  • The SQL login must permit at least 5 simultaneous sessions
  • Under load, all 5 can be busy at once; plan max worker threads and max connections accordingly

AdvancedLog#

ValueOutput
0Standard log only (connections, errors, summary lines)
1Adds per-packet header logging for the main GS-DS dispatcher and for the extended guild/castle/gens channel

Leave off in production. Enable temporarily when tracing a specific save or load path, then disable; the extra I/O slows the server under load.

Important Behavior#

  • Keys are read with the Windows INI parser. A missing file or missing key yields the documented default (empty string for text keys, the listed integer for numeric keys), so a missing or unreadable DataServer.ini results in an empty DSN and an empty license key, which then fail license activation and the SQL connect
  • License activation runs before anything else. An empty or invalid LicenseKey stops the process before the SQL connect is attempted
  • Primary database connection is attempted first; pool connections open next. Either failure keeps the TCP port closed, so GameServers cannot connect
  • License activation requires the license service to be reachable at startup. Offline grace only applies to heartbeats after a successful activation, not to the activation itself
  • Quotes, trailing spaces, and BOM can cause silent value truncation
  • Related files loaded from the DataServer root alongside this INI: AllowableIpList.txt and BadSyntax.txt

Examples#

DataServer.ini
[DataServerInfo]
DataServerODBC = MuOnline
DataServerPort = 55960
LicenseKey = YOUR-KEY-HERE

Common Issues#

  • Startup freezes at "Loading files..." - LicenseKey is empty, invalid, or the license service is unreachable
  • "Could not connect to database" - DSN name typo, wrong credentials, or the DSN targets the wrong SQL Server instance
  • "Could not connect pool connection N" - primary login works but the SQL login's session limit is below 5
  • GameServer cannot reach DataServer - DataServerPort changed but GameServer config was not updated, or a firewall blocks the port
  • [Schema] NOT STARTING in the log - the database is older than this DataServer. Apply the migrations (see Database Schema Check) and restart
  • Server Manager cannot connect to DataServer - ControlPort is 0, or ControlKey differs from the one set in the Server Manager
  • Excessive log noise, slow responses - AdvancedLog left at 1 under production load

Last updated October 1, 2026