Skip to main content
Call Eric:863-698-8266
CURRYCONTROLS.COMControls & Automation Knowledge Hub
ReferenceSCADATroubleshootingDocumentationCommunicationsDesign

Historian Problems

How a historian goes wrong and how to find each fault: gaps, wrong values, detail never stored, disks that fill, slow queries, backfill that never arrives, and unreadable archives, with the collector, queue, configuration, and storage checks that locate it.

9 min readUpdated Sep 5, 2026Published Sep 5, 2026By Eric Sullivan

The short answer

Historian Problems

Historian problems fall into a few families: gaps, from a collector that stopped, a buffer that overflowed during an outage, a tag renamed or deleted at the source, a license limit, or a clock jump; wrong values, from a scaling or unit change at the source, a tag pointed at the wrong address, or a change in engineering range; missing detail, from compression and deadband settings coarser than the question being asked; storage growth, from retention, tag count, and collection rate; slow queries, from raw data over long ranges and archives on slow storage; and failed backfill or unreadable archives, from time synchronization and archive file management. Each is located with the collector status, the queue depth, the tag configuration audit, the storage utilization, and the archive file list, and prevented with monitoring and a configuration standard for what is collected and how.

Key points

  • A gap is a collector, a buffer, a tag change, a license, or a clock; the gap pattern says which.
  • Wrong values in the historian are almost always right values from a changed source; check the tag and the scaling history.
  • Detail that was never stored cannot be recovered; set compression for the questions the data must answer.
  • Disk growth is retention times tag count times rate; the historian tells you which tag is the largest.
  • Backfill depends on time synchronization and buffer sizing at the remote controller.
  • Archive files are the data; back them up, register them after a restore, and test a read from an old one.

By symptom

SymptomLikely causesWhere to look
Gap on every tag at onceCollector or historian service stopped; server outage; disk full; license expiredService status and event log for the period; disk; license
Gap on every tag from one site or controllerCommunication lost with no store and forward; remote buffer overflowed; backfill failedCommunication alarm history; remote controller buffer configuration; backfill status
Gap on one tagTag renamed, deleted, or re-addressed at the source; collection disabled; tag beyond the license countTag configuration change history; collector tag list; license usage
Gap at a fixed time daily or weeklyA scheduled job: backup, archive roll, restart, a maintenance scriptSchedules on the server; the job log
Gap or overlap of an hour twice a yearDaylight saving time handled in local time instead of universal timeHistorian time base setting; server time zone
Values wrong by a factorScaling or engineering units changed at the source; a range change; a tag pointed at a different registerSource tag configuration and its change history; the date the values changed
Values flat where they should moveCompression deadband too wide; a value frozen at the sourceCompression settings for the tag; the source
Spikes that never happenedBad quality stored as a number; a communication glitch; a transition captured mid-write of a multi-register valueQuality of the samples; the driver statistics at the time
Disk filling faster than plannedTags added; collection rate increased; compression turned off; retention not enforcedHistorian storage report by tag; retention settings
Trends slow to openRaw data over long ranges; archives on slow storage; too many pens; a query without an aggregateQuery type; archive location; client trend configuration
Old data unreadableArchive files moved, deleted, or not registered after a restore; a version changeArchive file list against the storage; the restore procedure

The checks

  1. 1

    Collector status

    Every collector running, connected to its source, and the time of its last write. A stopped collector is the most common cause of a system-wide gap.

  2. 2

    Queue depth

    The buffer between the collector and the storage. A queue that grows is storage that cannot keep up or a link to the storage that is slow, and it overflows into a gap.

  3. 3

    Tag audit

    The historian tag list against the source tag list: tags renamed, deleted, or re-addressed, and tags added that are not collected. Run it after every source change.

  4. 4

    Configuration

    Collection rate, deadband, compression, and retention for the tags in question, against the standard for their class.

  5. 5

    Storage

    Free space, the growth rate, and the largest tags. Retention enforced and the purge job running.

  6. 6

    Time

    Server, collector, and source clocks synchronized, and the historian storing in universal time.

  7. 7

    Archives

    The archive file list, the backup of the archives, and a test read from an archive older than a year.

Detail that was never stored

Compression saves disk by discarding samples that fall within a tolerance of a line between the samples it keeps, and deadband collection discards changes smaller than a threshold. Both are set per tag, and both decide, forever, what questions the data can answer. A level compressed at one percent cannot show a half-percent oscillation; a flow collected at a one-minute average cannot show a ten-second surge. When someone asks the historian for detail it does not have, the answer is not a historian problem but a configuration decision, and the fix is to change the settings for the future and to look elsewhere, the controller or the device, for the past. The configuration standard says what each class of tag needs: fast and raw for control diagnostics, averaged for reporting, and it is reviewed when a new question arrives.

Backfill

A remote controller with a buffer keeps its history while the link is down and sends it when the link returns; the historian then has to accept samples with old timestamps and put them in place. That works when the controller clock is synchronized, the buffer is large enough for the outage, the protocol carries the timestamps, and the historian is configured to accept out-of-order data. Any one of those missing leaves a gap that the site did not have to have. Test it at commissioning by disconnecting the link for an hour and looking at the trend the next day.

Frequently asked questions

The trend shows a value that changed by a factor of ten on a certain date. Was the historian corrupted?
Almost certainly not. The source changed: a scaling, a range, an engineering unit, or the tag was re-addressed. Find the change in the source configuration history on that date. The historian stored what it was given; the fix is either a correction factor in reports for the earlier period or, on some historians, a rescaling of the stored values with a record of what was done.
How much disk should the historian have?
Bytes per sample times samples per day per tag times tags times retention days, computed from the historian storage report for the actual system rather than from estimates, doubled for growth, plus the archives that are kept beyond the online retention. Then alarm at a threshold that gives months of warning.
Why do the totals from the historian differ from the totalizer in the controller?
The historian integrates sampled values; the controller integrates every scan. Sampling, compression, and gaps all reduce the historian total, and bad-quality samples treated as zero reduce it further. Use the controller totalizer for the official total and historize it as a tag; use the historian integral for analysis.
Can I delete old tags to free space?
Deleting a tag usually removes its history, which may be a regulatory record. Stop collecting it and leave the history, or archive the tag history to a file before deleting. Check the retention requirement for the data before anything is removed.

Direct contact

Have a controls question?

Reach Eric Sullivan directly about anything on this site, a controls or automation topic, or one of his personal projects.