Skip to main content
Version: 8.3 Beta 🚧

Ignition Database Table Reference

Ignition has a lot of systems built-in that will query the database automatically without requiring you to build a query. These systems automatically create the necessary tables in the database, insert the relevant data, and even query it back out for you. However, because this data is all stored in simple database tables, it can be manually accessed using queries to customize how you see the data.

caution

These tables are configured in very specific ways. Altering them may cause unforeseen issues, and is not recommended.

While it can be useful to manually query out data from these tables, we recommend taking a backup of the database tables before making changes, with the understanding that altering the data or tables is done at your own risk.

Tag History​

The Tag History system utilizes at least six different tables in the database:

Table NameTable DescriptionColumn References
sqlt_data_X_XThis table stores the raw tag data. There will be multiple tables that fit this format depending on the name of the Gateway and the date. (For example, a table named "sqlt_data_1_2018_01" would store data from the driver with an id of 1, for the year 2018, for the month of January)sqlt_data_x_x_x.tagid = sqlth_te.id
sqlth_1_dataThis table stores raw tag data, and is only used when the provider is configured to use a single partition (The provider's "Enable Partitioning" setting is unchecked).sqlt_1_data.tagid = sqlth_te.id
sqlth_teThis table stores the non-data details of each tag.sqlth_te.scid = sqlth_scinfo.id
sqlth_scinfoThis table stores tag group information.sqlth_scinfo.drvid = sqlth_drv.id
sqlth_sceThis table stores start and end times for tag groups.sqlth_sce.scid = sqlth_scinfo.id
sqlth_partitionsThis table stores start and end times for each sqlt_data table.sqlth_partitions.drvid = sqlth_drv.id
sqlth_drvThis table stores information about the drivers of the historical data.none
sqlth_annotationsThis table stores annotations for the Tag History system, such as those created by the Power Chart.none

sqlt_data_X_X​

This is the central table that stores the core tag values. The system stores data in tables based on the history provider's partition length and units. For example, a monthly partition would use a table named like sqlt_data_{driverId}_{year}_{month}, whereas a daily partition would use sqlt_data_{driverId}_{yearMonthDay}. The duration of each partition is also tracked on the sqlth_partitions table.

When pre-processed partitions are enabled, an additional sql_data table will be created for each partition. The system tracks which partitions are pre-processed by the "blocksize" column on the sqlth_partitions table.

Column NameData TypeNotes
tagidintUnique id of the tag. References the sqlth_te table.
intvalueintHolds the value of the tag if it is data type 0, NULL otherwise.
floatvaluedoubleHolds the value of the tag if it is data type 1, NULL otherwise.
stringvaluestringHolds the value of the tag if it is data type 2, NULL otherwise.
datevaluedateHolds the value of the tag if it is data type 3, NULL otherwise.
dataintegrityintQuality of the tag for this timestamp. 192 is Good Quality, anything else is bad. See Tag Quality Overlays.
t_stamplongUnix Timestamp (milliseconds since epoch) for this value.
vtypeintRepresents metadata about the record, used for pre-processed partitions. For details, see Pre-Processed Partitions.
note

Default indexing includes:

  • tagid
  • t_stamp

sqlth_1_data​

This is the data table for historian providers that have disabled multiple partitions (by unchecking the "Enable Partitions" setting).

Column NameData TypeNotes
tagidintUnique id of the tag. References the sqlth_te table.
intvalueintHolds the value of the tag if it is data type 0, NULL otherwise.
floatvaluedoubleHolds the value of the tag if it is data type 1, NULL otherwise.
stringvaluestringHolds the value of the tag if it is data type 2, NULL otherwise.
datevaluedateHolds the value of the tag if it is data type 3, NULL otherwise.
dataintegrityintQuality of the tag for this timestamp. 192 is Good Quality, anything else is bad. See Tag Quality Overlays.
t_stamplongUnix Timestamp (milliseconds since epoch) for this value.
vtypeintRepresents metadata about the record, used for pre-processed partitions.
note

Default indexing includes:

  • tagid
  • t_stamp

sqlth_te​

This table stores metadata for each historical tag. A row in this table represents a unique version of a tag's historical configuration. When a tag is modified in certain ways (renamed, data type changed, etc.), a new row is inserted and the previous entry is "retired."

Column NameData TypeNotes
idintUnique ID of the tag. Primary key for this table.
tagpathstringFull path of the tag within the Tag Provider, e.g., Folder1/tag1.
scidintScan class (Tag Group) ID. References the sqlth_scinfo table, indicating the scan class this tag uses.
datatypeintDetermines which column in the partition tables stores the tag’s historical value.
  • 0: Stored in intvalue (used for integers and booleans)
  • 1: Stored in floatvalue (used for floats, doubles, longs, and date/time values)
  • 2: Stored in stringvalue (used for strings)
querymodeintReflects the Deadband Style setting selected when tag history was enabled.
  • 0: Discrete, which stores values when the difference from the last stored value exceeds the deadband.
  • 3: Analog, which uses compression algorithms to evaluate when to store values.
createdlongUnix timestamp (milliseconds since epoch) for when this tag entry was created.
retiredlongUnix timestamp (milliseconds since epoch) for when this tag entry was retired. NULL means the entry is currently active.
A tag is marked as retired when any of the following occur:
  • The tag is deleted
  • The tag is renamed
  • The tag’s scan class (Tag Group) is changed
  • The tag’s data type is changed
If a tag is simply disabled and then deleted, this value will remain NULL.
note

Default indexing includes:

  • id
  • scid

sqlth_scinfo​

This table stores information about Tag Groups, including their execution rates and associated drivers.

Column NameData TypeNotes
idintUnique id of the Tag Group.
scnamestringName of the Tag Group. A value of "exempt" is used when the execution rate is not recorded.
drvidintThe driver this Tag Group uses. References the sqlth_drv table.
note

Default indexing includes:

  • id
  • drvid

sqlth_sce​

This table stores the start and end times for Tag Group execution periods. Each entry tracks execution periods for a specific Tag Group.

Column NameData TypeNotes
scidintReferences the sqlth_scinfo table.
start_timelongUnix Timestamp (milliseconds since epoch) for the first execution of this Tag Group.
end_timelongUnix Timestamp (milliseconds since epoch) for the latest execution of this Tag Group.
rateintThe execution rate (in milliseconds) of the Tag Group.
note

Default indexing includes:

  • scid
  • start_time

sqlth_partitions​

This table defines the partitions used by the history system to segment data across multiple tables. Partitioning allows efficient storage and retrieval of data.

Column NameData TypeNotes
pnamestringThe name of the table that contains this partition's data.
drvidintThe id of the driver that owns this data table. References the sqlth_drv table.
start_timelongUnix Timestamp (milliseconds since epoch) for the earliest time covered by this partition.
end_timelongUnix Timestamp (milliseconds since epoch) for the latest time covered by this partition.
blocksizeintThe size (in milliseconds) of time covered by each entry, used for pre-processed partitions.
flagsintAdditional flags affecting partition usage. For example, a flag of 1 disables seed queries.
note

Default indexing includes:

  • pname
  • start_time

sqlth_drv​

This table stores information about the drivers used in the history system. Each driver corresponds to a source of historical data.

Column NameData TypeNotes
idintUnique id of the driver.
namestringName of the driver. Typically, this is the system name of the Ignition Gateway storing records.
providerstringThe name of the Tag provider associated with the driver.
note

Default indexing includes:

  • id

sqlth_annotations​

This table stores annotations related to Tag History. These are often user-created notes associated with specific data points.

Column NameData TypeNotes
idintUnique id of the annotation.
tagidintThe tag id the annotation pertains to. References the sqlth_te table.
start_timelongUnix Timestamp (milliseconds since epoch) for the start time of the annotation.
end_timelongUnix Timestamp (milliseconds since epoch) for the end time of the annotation.
typestringThe type of annotation. Currently, the only defined type is "note."
datavaluestringThe content of the annotation, when type is "note."
annotationidstringA UUID used to track the annotation across multiple Gateways.
note

Default indexing includes:

  • tagid
  • start_time

Tag History - Internal History Provider​

Internal History Providers use a different table scheme compared to external providers. These tables are stored in an IDB file located at IgnitionInstallationDirectory/data/local/tag-historian.

Note that these tables exclusively live in a SQLite database, so a database viewer is required to access them.

Table NameTable Description
annotationsThis table keeps track of annotations for specific tags.
schema_infoProvides information on when the internal provider was created. Usually contains only one row.
tagdataStores the actual historical records, along with a sync id for synchronizing data between Gateways.
tagdetailsProvides information about tags storing data. Does not track scan class/tag group information.
tagpropertiesTracks properties of tags, such as datatype and interpolation mode.
tagsAssociates each tag’s id with a path for query purposes.

annotations​

Column NameData TypeNotes
idintUnique id of the annotation.
tagidintThe tag id the annotation pertains to. Maps to the id column on the tags table.
typetextType of the annotation.
rangestartintTimestamp representing the start of the annotation.
rangeendintTimestamp representing the end of the annotation.
datatextData associated with the annotation, such as user-entered content.
syncidintSync id for synchronizing annotations with other Gateways.
annotationidintA UUID used to uniquely identify the annotation.
deletedbooleanIndicates whether the annotation is marked as deleted.
note

Default indexing includes:

  • tagid
  • rangestart

schema_info​

Column NameData TypeNotes
versionintVersion of the schema. Typically set to "4."
createdintUnix Timestamp (milliseconds since epoch) for when the schema was created.
note

Default indexing includes:

  • version

tagdata​

Column NameData TypeNotes
tagidintReferences the tag id on the tags table.
numvaluenumericNumeric value of the tag, if applicable.
strvaluetextString value of the tag, if applicable.
qualityintQuality code for the value.
t_stampintUnix Timestamp (milliseconds since epoch) for the stored value.
syncidintSync id for synchronizing records across Gateways.
note

Default indexing includes:

  • tagid
  • t_stamp

tagdetails​

Column NameData TypeNotes
idintUnique id of the detail.
tagidintReferences the tag id on the tags table.
createdintUnix Timestamp (milliseconds since epoch) for when this detail entry was created.
retiredintUnix Timestamp (milliseconds since epoch) for when this detail entry was retired.
datatypeintThe datatype of the detail.
ttlintTime-to-live.
syncidintSync id for synchronizing records across Gateways.
note

Default indexing includes:

  • tagid
  • created

tagproperties​

Column NameData TypeNotes
tagidintReferences the tag id on the tags table.
nametextName of the property.
valuetextValue of the property.
datatypeintThe datatype of the property.
note

Default indexing includes:

  • tagid
  • name

tags​

Column NameData TypeNotes
idintUnique identifier for the tag.
tagpathtextFull path of the tag, including the tag provider.
note

Default indexing includes:

  • id
  • tagpath

Alarm Journal​

The Alarm Journal system utilizes two different tables in the database:

Table NameTable Description
alarm_eventsThis table stores every event (active, cleared, acknowledged) that happened to any alarms that fit within the Journal filter parameters. Each row is a new eventalarm_events.id = alarm_event_data.id
alarm_events_dataThis table stores unique information pertaining to each event. Each row is a specific property of a specific event, so alarm events with multiple properties will have multiple rows in the table.none

The names of the tables are completely configurable in the Journal settings in the Gateway. The default table names are used in the table. See the Journal Properties and Tables page for more information regarding all of the columns in the tables.

alarm_events​

This table captures the main record of each alarm event that occurred. One row is created for each change in state (active, cleared, acknowledged).

Column NameData TypeNotes
idintUnique ID for this event. Primary key.
eventidintIdentifier that groups related event records together. All active, cleared, and acknowledged states for a single alarm occurrence share the same eventid.
sourcestringThe source path of the alarm, such as a tag path or expression item.
displayPathstringHuman-readable display path of the alarm (can be overridden in alarm configuration).
priorityintAlarm priority level:
  • 0 = Diagnostic
  • 1 = Low
  • 2 = Medium
  • 3 = High
  • 4 = Critical
eventtypeintAlarm state change:
  • 0 = Active
  • 1 = Cleared
  • 2 = Acknowledged
eventflagsintBitmask representing metadata about the event (e.g., whether it was system-generated).
eventtimedatetimeTimestamp for when the event occurred.
note

Default indexing includes:

  • id

alarm_events_data​

This table stores event-specific properties, such as custom alarm properties or tag values at the time of the event. Each row represents one property for one event.

Column NameData TypeNotes
idintReferences the id from the alarm_events table.
propnamestringName of the property (e.g., "AckUser", "Notes", or "IsShelved").
dtypeintRepresents the type of value stored in this row:
  • 0 = Integer
  • 1 = Float
  • 2 = String
intvalueintValue of the property if dtype = 0. Otherwise NULL.
floatvaluefloatValue of the property if dtype = 1. Otherwise NULL.
strvaluestringValue of the property if dtype = 2. Otherwise NULL.
note

Default indexing includes:

  • id

Authentication​

The Database Authentication system utilizes six different tables in the database:

Table NameTable DescriptionColumn References
scada_usersThis table stores each user contained within the user source, along with basic user information. Each row is a new user.none
scada_rolesThis table stores all of the possible roles within the user source. Each row is a new role.none
scada_user_rlThis table stores a mapping of users to roles. Each row is a user and a paired role, so users with multiple roles will have multiple rows in the table.scada_users_rl.user_id = scada_users.id<br/>scada_users_rl.role_id = scada_roles.id
scada_user_saThis table stores a list of all upcoming schedule adjustments for each user. Each row is a new schedule adjustment, so users with multiple schedule adjustments will have multiple rows in the table.scada_user_sa.user_id = scada_users.id
scada_user_ciThis table stores a list of all contact information items for each user. Each row is a new contact information item, so users with multiple contact information items will have multiple rows in the table.scada_user_ci.user_id = scada_users.id
scada_user_exThis table stores a list of all extra properties for each user, with properties and values stored 1 for 1. Each row is a new property and value pair, so users with multiple extra properties will have multiple rows in the table. Extra properties are added for modules that want to associate data with a user, such as the Voice Notification Module, which adds a Security PIN setting.scada_user_ex.user_id = scada_users.id

The prefix of the tables are configurable in the User Source settings in the Gateway. The default prefix of "scada_" is used in the table.

scada_users​

This is the core user table. It contains authentication credentials and general profile information for each user.

Column NameData TypeNotes
idintUnique ID for the user.
usernamestringThe user's login name.
passwordstringEncrypted password hash.
firstnamestringUser’s first name.
lastnamestringUser’s last name.
schedulestringAssigned schedule name (for On-Call Roster or Scheduled Roster logic).
notesstringOptional user notes.
note

Default indexing includes:

  • id

scada_roles​

Stores all defined roles that can be assigned to users.

Column NameData TypeNotes
idintUnique ID for the role.
namestringName of the role (e.g., "Administrator", "Operator").
note

Default indexing includes:

  • id

scada_user_rl​

Links users to their assigned roles. One row per user-role pair.

Column NameData TypeNotes
user_idintReferences scada_users.id.
role_idintReferences scada_roles.id.
note

Default indexing includes:

  • user_id
  • role_id

scada_user_sa​

Stores schedule overrides or adjustments for individual users.

Column NameData TypeNotes
idintUnique ID for the schedule adjustment.
user_idintReferences scada_users.id.
starttimedatetimeWhen the schedule adjustment starts.
endtimedatetimeWhen the schedule adjustment ends.
typestringType of adjustment (e.g., "Available", "Unavailable").
note

Default indexing includes:

  • user_id

scada_user_ci​

Stores pieces of contact info for users, such as emails or phone numbers.

Column NameData TypeNotes
idintUnique ID for the contact info entry.
user_idintReferences scada_users.id.
typestringType of contact (e.g., "Email", "Phone").
valuestringContact information value.
note

Default indexing includes:

  • user_id

scada_user_ex​

Stores custom or extra properties for a user. Often used by modules (e.g., Voice Notification) to store settings like PIN codes.

Column NameData TypeNotes
idintUnique ID for the property.
user_idintReferences scada_users.id.
namestringName of the property (e.g., "VoicePIN").
valuestringValue of the property.
note

Default indexing includes:

  • user_id

Audit Log​

The Audit system utilizes one table in the database:

Table NameTable DescriptionColumn Reference
AUDIT_EVENTSThis table stores each auditable event (save, publish, edits, etc.) that has happened for each project or system that has auditing enabled. Each row is a new event.none

The names of the tables are completely configurable in the Audit settings in the Gateway. The default table names are used in the table.

AUDIT_EVENTS​

Column NameData TypeNotes
AUDIT_EVENTS_IDintUnique identifier for the event. Primary key.
EVENT_TIMESTAMPdatetimeTimestamp for when the action occurred.
ACTORstringThe user or system that performed the action.
ACTOR_HOSTstringHostname or IP of the system where the action originated.
ACTIONstringBrief description of the action (e.g., "Tag Write", "Script Run").
ACTION_TARGETstringThe target affected by the action (e.g., tag path, script name, user).
ACTION_VALUEstringThe value involved in the action (e.g., written value, changed property).
STATUS_CODEintA 32-bit integer bitmask representing the result of the action (e.g., good, bad, uncertain).
Refer to AuditStatus.SubCode for decoding specific status codes.
ORIGINATING_SYSTEMstringName of the project or system that performed the action.
ORIGINATING_CONTEXTintNumeric bitmask representing the context of origin:
  • 1 = Gateway
  • 2 = Designer
  • 4 = Client
note

Default indexing includes:

  • audit_events_id
  • event_timestamp