Troubleshooting Ignition SQL Server Stowed Database Writes

Erik Lindqvist6 min read
HMI / SCADAOther ManufacturerTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Restoring the offline SQL Express dependency lets the database trigger complete, allowing Ignition to commit new records instead of adding them to store-and-forward stowage. The primary database connection can remain healthy while a downstream server referenced by an insert trigger makes every affected transaction fail.

Queue growth and failure timing

The number that matters is the rate at which failed records enter stowage compared with the rate at which they can later be committed. During an outage, queued records grow approximately as failed write rate × outage duration. The reported transition occurred at about 04:00 on 7/7/2026, so infrastructure and SQL events at that time provide the narrowest diagnostic window.

This is accumulated work, not proof that the destination database disappeared. Ignition attempted a write, received a SQL exception, and retained the record for retry. Restarting the historian or gateway changes when another attempt occurs; it does not remove the external condition rejecting the transaction.

Quantity or limit Meaning Where to read it
Failure start time Correlates the first rejected write with server, service, DNS, or network events Gateway logs and SQL Server logs around 04:00 on 7/7/2026
Stowed record count Measures outstanding work and whether the fault remains active Ignition store-and-forward status
Queue growth rate A rising value means new writes still fail Compare stowed counts at two recorded times
Queue drain rate Committed retry throughput minus newly arriving records Store-and-forward status after repair
Downstream server state Determines whether the trigger can finish its external operation SQL service state, network tests, name resolution, and SQL logs on the referenced system

Trigger-mediated failure path

The logged exception was:

com.inductiveautomation.ignition.gateway.storeforward.exceptions.DataStorageException: com.microsoft.sqlserver.jdbc.SQLServerException: SQL Server Network Interfaces: Error Locating Server/Instance Specified [xFFFFFFFF].

An insert trigger executes inside the transaction initiated by the original insert. If that trigger contacts another SQL system and the external operation fails, SQL Server can reject the entire transaction. Ignition then receives a failed write result from its configured database connection. Store-and-forward responds to that result by stowing the record, even though the configured database and other databases on the same server remain reachable.

Here, the affected trigger pulled supplemental data from SQL Express servers located on plant devices. One of those servers was off. The trigger could not complete its external lookup or insert path, so the initiating Ignition write failed and entered stowage. The phrase “server/instance specified” therefore points to the instance used anywhere in the transaction path, not necessarily the primary instance configured in Ignition.

Competing fault paths

Approach Observation that favors it Decisive check Recommended priority
Repair the primary Ignition database connection All operations through that connection fail, including simple operations that do not invoke application triggers Test the configured connection and inspect the destination SQL logs Secondary when other databases on the same SQL server remain accessible
Trace the insert-trigger dependency chain Only writes that fire a particular trigger fail; an external SQL Express server is unavailable Inspect the target table’s trigger and test every server or instance it references First choice for this failure
Investigate the Ignition 8.1 to 8.3 upgrade The fault begins with the upgrade and persists when the same transaction succeeds outside the upgraded gateway Compare the exact failed SQL transaction and gateway logs rather than relying on timing alone After validating the SQL transaction path
Restart services or clear stowage A transient service state clears and subsequent writes commit Watch whether the queue stops growing after the action Diagnostic at most; it does not repair an offline trigger dependency

Trace the trigger chain first. The combination of working connections to the same primary server, a returned SQL network-interface exception, and a known offline SQL Express dependency identifies the failed transaction path more directly than the recent version change.

Dependency repair procedure

  1. Record the current stowed count, oldest queued timestamp, affected database connection, and complete exception text. Preserve this baseline before changing services.
  2. Identify the table receiving the failed insert. Review every insert trigger on that table and list each external server or instance contacted during trigger execution.
  3. Test each listed endpoint from the system that actually executes the trigger path. Check device power, SQL service state, host and instance name resolution, network reachability, and authentication separately; a successful Ignition-to-primary-server test does not exercise this downstream route.
  4. Restore the offline SQL Express server or the required path to it. If that supplemental source is intentionally unavailable, have the database owner change the trigger’s failure policy according to the process requirements rather than masking the error at the gateway.
  5. Run one controlled, application-approved insert that fires the same trigger. Confirm that SQL Server commits the transaction and that the network-interface exception does not recur.
  6. Allow store-and-forward retries to resume. Track the queue count at fixed observation times; it must stop increasing before it can drain.
  7. Confirm that queued history reaches its destination in timestamp order expected by the application. Reconcile the retained time range against any records removed when stowage was cleared.

Recovery verification

A green connection status alone is insufficient because it checks the configured endpoint, not every dependency executed by a trigger. Verification must exercise the affected insert path and observe the queue under normal incoming load.

Check Passing result Failure meaning
Controlled insert The transaction commits The trigger or one of its dependencies still fails
New live records Records reach the destination without entering stowage The initiating condition remains active
Stowed count The count falls over successive observations Retry throughput is not exceeding the arrival rate, or some records still fail
Gateway log No new DataStorageException or xFFFFFFFF occurrence The SQL failure is still being returned
Historical continuity Expected timestamps and values exist after draining Records remain queued, failed permanently, or were removed during clearing

If the backlog is large, recovery can take time even after the fault is gone. The deciding trend is a falling queue count while new production data continues to arrive. A flat count means drain throughput merely matches the arrival rate; a rising count means failures continue or retry capacity is lower than incoming load.

Recurring design pitfalls

Database triggers create dependencies that are invisible in the Ignition connection list. Document each remote endpoint as part of the write path, monitor its power and SQL service state, and alarm on trigger failures before the store-and-forward queue becomes operationally significant.

Repeated restarts can obscure timestamps without changing the failing SQL statement. Recreating a connection also leaves server-side triggers untouched. Treat clearing or deleting stowed records as a data-loss action: capture the queue’s time range and obtain process-owner approval before removing buffered history.

For future diagnostics, separate endpoint health from transaction health. Endpoint health proves that Ignition can contact the configured SQL server. Transaction health proves that the complete insert—including triggers, external lookups, permissions, and downstream instances—can commit.

Frequently asked questions

What happens if the main SQL Server is online but a trigger dependency is offline?

The outer insert can fail when the trigger contacts the offline system. Ignition then stows the record even though its configured SQL connection remains available.

What happens if I restart Ignition while records are stowing?

A restart causes the transaction to be attempted again but does not repair an unavailable SQL Express dependency. Check whether the stowed count continues rising after the restart.

What happens if I clear Ignition store-and-forward stowage?

Buffered records selected by the clear operation may no longer be available for forwarding. Record the queued time range and reconcile destination history before treating recovery as complete.

What happens if the queue stays flat after the SQL server returns?

Retry throughput may equal the rate of new records, or a subset of transactions may still fail. Compare counts over time and inspect new gateway exceptions to distinguish capacity from an active fault.

When should I stop troubleshooting and contact official support?

Stop after the controlled insert succeeds directly but Ignition still produces new DataStorageException entries, or when the trigger path is healthy and the queue cannot drain. Contact official Ignition support with gateway logs, the failure timestamp, connection status, stowage trend, and the exact versions 8.1 and 8.3 involved.

Back to blog