Informix Management Studio

One window in which to connect to an Informix server, browse its objects, write and run SQL, and see what the server is doing.

Early build. Not every capability described here is finished. If a menu item is missing or disabled, it is not yet implemented rather than broken — docs/IMPLEMENTATION-TODO.md in the source repository records exactly what is and is not built.

Getting started

IMS needs the IBM Informix Client SDK installed, with the 64-bit ODBC driver registered. The CSDK is not bundled — IMS assumes no rights to redistribute IBM client libraries — so it must be installed separately.

You may already have it: the CSDK often arrives with Informix server tooling, and your DBA can say whether your organisation already licenses a copy. Otherwise IBM publishes installation documentation, and the download is on Fix Central under Informix Client Software Development Kit — choose a 64-bit Windows package; an IBMid and an entitled account are required.

If the SDK is missing or misconfigured, IMS says so at startup in a prerequisite window that explains what is wrong, rather than failing later as an unexplained connection error. Help → About IMS shows the detected SDK version, INFORMIXDIR, and ODBC driver name — the three values worth checking first when something will not connect.

Connections

A connection in IMS is described entirely by its own settings rather than by the machine's sqlhosts file, so a connection that works on your workstation works the same way on someone else's.

FieldMeaning
ServerThe Informix server name (the INFORMIXSERVER value), for example ol_dev.
HostHostname or address of the machine running the server.
ServicePort or service name, commonly 9088.
ProtocolAlmost always onsoctcp.
DatabaseThe database to open. Naming one is required — this server refuses an empty value.
EnvironmentDevelopment, UAT or Production. Shown persistently beside the connection.

Mark the environment honestly

The environment label is shown next to the connection at all times, so a production connection cannot be mistaken for another. It changes nothing about how statements are sent — it exists purely so you can see, at a glance, what you are pointed at.

Passwords

Your password goes into Windows Credential Manager, never into a configuration file and never into a log. Saved connections are stored without passwords; the entries in Credential Manager are keyed per connection, so deleting a connection does not orphan its credential.

Object browser

The tree on the left lists the objects in the connected database — tables, views, indexes, procedures — grouped by owner. Expanding a node loads its children on demand rather than reading the whole catalogue at connect time, so opening a large schema does not stall.

Right-click a node for the actions available on it, including refreshing a single node when you have changed something outside IMS.

Object detail

Right-click a table or a view and choose Show detail. It opens in a tab of its own, alongside your query tabs, showing the columns and their types, the indexes, the constraints, the triggers, and how the object is stored — its dbspace, lock mode, extent sizing and fragmentation. Terms particular to Informix carry an explanation on their tooltip, and the panel at the foot of the tab lists the exact catalogue queries IMS ran to fill it.

Each object gets its own tab, so you can open two tables and switch between them to compare. Asking for detail on an object that is already open returns you to its tab rather than opening a second one. Close a detail tab as you would any other — the on the tab, or a middle-click on it.

Detail is read once, when you open the tab. Moving around the tree afterwards does not re-read it, so browsing a large schema costs nothing on the server.

SQL editor

The editor highlights Informix SQL and SPL. Each tab holds one script with its own connection and its own results, so a long query in one tab does not block work in another.

ActionKey
Run the script, or the selection if there is oneF5
Run only the selected textCtrl + Enter
Cancel — see the note belowAlt + Break
New tabCtrl + N
Complete the word being typedCtrl + Space

Selecting text and running executes only the selection. That is the usual way to run one statement out of a longer script.

The query toolbar

The strip above the tabs carries every query action, so none of them depends on knowing its key or finding it in a menu.

The query toolbar. From the left: the text "Not connected", connect and disconnect, new, open and save, a greyed-out Execute and run-selection, a greyed-out Commit and Roll back, complete word, clear results, export and copy, then history and help.
The toolbar on a tab with no connection — everything needing a server is greyed out.

Left to right:

ItemWhat it does
Connection targetWhich instance the current tab runs against, as plain text at the left end. It reads Not connected when the tab has no connection.
Connect / DisconnectThe two plug buttons. Connect opens the connection dialog for this tab; disconnect closes its connection.
New, Open, SaveA new query tab, open a .sql file, save this tab.
ExecuteRuns the script, or the selection if there is one. Becomes Cancel in place while a statement runs, in the same spot, so the strip does not shuffle under the cursor.
Run selectionRuns only the selected text.
Commit, Roll backEnds the current transaction one way or the other.
Complete wordCompletes the word being typed in the editor.
Clear resultsDrops the result tabs and messages this tab is holding.
Export, CopyThe current result to a CSV file, or the selected cells to the clipboard.
History, HelpThe statements this session has run, and this file.

Everything that needs a connection stays greyed out until there is one — on a tab reading Not connected, only new/open/save, connect and help are live. Each button drives the same command as its menu entry, so the menu and the toolbar cannot disagree about what an action does.

Cancelling stops the waiting, not the statement. Measured against Informix 14.10, the ODBC driver's cancel does not reach the server: the statement runs to completion or to its timeout regardless. IMS therefore stops waiting for the result and returns the window to you, and the session stays usable — but the server keeps working until the statement finishes on its own.

The practical consequence: a cancel frees you, not the server. Bound an expensive query before you send it — with FIRST, or a restrictive WHERE — rather than relying on cancelling it afterwards.

Results

Each statement that returns rows gets its own result tab, labelled by the statement it came from. Rows are fetched in blocks rather than all at once, so a large result starts displaying immediately; Fetch more rows continues it. When a grid is showing only part of a result, it says so — a truncated grid is never presented as a complete one.

Export to CSV writes the current result to a file. Both it and Copy are on the toolbar as well as the Results menu.

Copy selection puts the selected cells on the clipboard, tab-separated, so they paste into a spreadsheet with columns intact.

Clear results drops the result tabs and the messages the current tab is holding. Results accumulate until the next run replaces them, so this is the way to let a long session's grids go without running a statement to do it. It clears only what is on screen; nothing on the server changes.

Session monitor

A read-only view of what the server is doing, drawn from sysmaster — sessions, what they are running, and what they are waiting on. It answers "what is holding this up" without a shell on the database host.

It is strictly read-only. IMS does not offer to kill a session; if a session needs terminating, that is an administrative action for whoever owns the server, done with the server's own tools.

Keyboard

ActionKey
Run script or selectionF5
Run only the selected textCtrl + Enter
Stop waiting for the running statementAlt + Break
New query tabCtrl + N
Open a .sql fileCtrl + O
Save this tabCtrl + S
Complete the word being typedCtrl + Space
Copy selected cellsCtrl + C
This helpF1

To close a tab, use its or middle-click the tab header. There is no keyboard shortcut for it yet.

Files and logs

LocationWhat is there
%APPDATA%\IMS\connections.jsonSaved connections. No passwords — those are in Credential Manager.
%LOCALAPPDATA%\IMS\logsLog files. Credentials and result data are stripped before anything is written.
Windows Credential ManagerYour passwords, under entries beginning IMS:.

Redaction happens at the logging boundary rather than at each call site, so no credential or row of result data reaches a log file even when logging is turned up for diagnosis. A log is safe to send with a bug report.

Troubleshooting

IMS reports the Client SDK is missing

Check Help → About IMS. If INFORMIXDIR is empty the SDK is not installed or not on this account's environment. If it is set but the ODBC driver is (none registered), the SDK is installed but its 64-bit driver is not registered — IMS is a 64-bit process and cannot load a 32-bit driver.

Error -354, "Incorrect database or cursor name format"

The connection has no database named. The ODBC driver accepts an empty Database, but the server refuses it; naming a database resolves it.

A query will not stop

Expected — see the note under SQL editor. Cancelling returns the window to you; the statement continues on the server until it finishes or hits its timeout.

Reporting a problem

Open Help → About IMS and click Copy details. That puts the version, the exact commit, the SDK version and the OS on your clipboard. The commit is what makes a report reproducible — a version number alone is true of several builds.

What IMS will not do

IMS performs no administrative change of its own. Every statement it sends is one you typed or explicitly requested; it issues nothing on its own initiative. What you may do is decided by your Informix privileges, not by IMS — it grants no capability you do not already hold, and there is no shared or service account behind it.

It also emits no telemetry of any kind. That is enforced by a test that fails the build if a telemetry package enters the dependency graph, rather than by intention.

Those constraints are what make it reasonable to point IMS at a production server, and to hand it to a colleague.