MS SQL Schema
Dieses Dokument beschreibt die statischen Datenbankobjekte, die von schema.sql erstellt werden.
archive_groups
Die Tabelle archive_groups enthält Informationen über die Archivgruppen des Backends.
Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| group_name | nvarchar(50) | Name der Archivgruppe (Format: systemName:groupName) |
| retention_interval | int | Einheit der Aufbewahrungsdauer (0:minutes,1:hours,2:days,3:weeks,4:months,5:years) |
| retention_factor | int | Aufbewahrungszeit in Einheiten von retention_interval |
| segment_duration_interval | int | Einheit der Segmentdauer (0:minutes,1:hours,2:days,3:weeks,4:months,5:years) |
| segment_duration_factor | int | Segmentdauer (Faktor in Einheiten von segment_duration_interval) |
| backup_interval | int | Einheit des Sicherungsintervalls (1:hours,2:days,3:weeks,4:months,5:years) |
| backup_factor | int | Dauer des Sicherungsintervalls |
| backup_age_interval | int | Einheit des Sicherungsalters (0:minutes,1:hours,2:days,3:weeks) |
| backup_age_factor | int | Alter der zu sichernden Segmente |
| segment_size | int | Segmentgröße (Einheit abhängig von den Backend-Einstellungen) |
| system_number | int | Gruppen-System-ID-Nummer |
| datapoint | int | Gruppen-Datenpunkt-ID |
| dp_name_embedded | nvarchar(4000) | DPE-Name der Gruppe |
| next_scheduled_backup | bigint | Zeit der nächsten geplanten Sicherung (Epoch in ns/ms abhängig vom Backend) |
| enabled | bit | Ist die Archivgruppe aktiviert? (Standard 1) |
| alert | bit | Ist dies die Alarm-Archivgruppe? (Standard 0) |
| disable_backup_on_deletion | bit | Sollen Segmente gesichert werden, deren Aufbewahrungszeit überschritten wurde? (Standard 0) |
Constraints und Indizes
- PK_archive_groups: PRIMARY KEY (group_name)
configuration
Die Tabelle configuration wird als Key-Value-Store für interne Parameter verwendet, die beim Anlegen der Datenbank definiert werden.
Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| name | nvarchar(50) | Parametername |
| value | nvarchar(4000) | Parameterwert |
Constraints und Indizes
- PK_configuration: PRIMARY KEY (name)
elements
Die Tabelle elements enthält Informationen zu den Datenpunktelementen (DPE), deren Werte gelesen, geschrieben und archiviert werden müssen.
Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| element_id | bigint | ID des DPE |
| sys_id | bigint | System-ID |
| type_ | bigint | Elementtyp (integer, float, etc.) |
| event | bit | Ist dieses Element ein Event? (Standard 0) |
| alert | bit | Ist dieses Element ein Alarm? (Standard 0) |
| element_name | nvarchar(4000) | DPE-Name |
| dpt_name | nvarchar(4000) | Datenpunkttyp-Name |
| dpt_id | int | Datenpunkttyp-ID |
| unit | nvarchar(4000) | Wert-Einheit |
| alias | nvarchar(4000) | Alias-Text |
| comment_ | nvarchar(4000) | Kommentar |
Constraints und Indizes
- PK_elements: PRIMARY KEY (element_id)
- FK_elements_systems: FOREIGN KEY (sys_id) REFERENCES systems(sys_id)
- element_name_idx: NONCLUSTERED INDEX (element_name)
elements_to_archive_groups
Die Tabelle elements_to_archive_groups definiert die Many-to-Many-Beziehungen zwischen "archive groups" und "elements". Diese Tabelle ermöglicht das Speichern von Querverweisen für mehrere Archivgruppen.
Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| element_id | bigint | Element-ID |
| group_name | nvarchar(50) | Name der Archivgruppe |
Constraints und Indizes
- PK_elements_to_archive_groups: PRIMARY KEY (element_id, group_name)
- FK_to_elements: FOREIGN KEY (element_id) REFERENCES elements(element_id) ON DELETE CASCADE
scheduler_tasks
Die Tabelle scheduler_tasks enthält Informationen über die letzte erfolgreiche Ausführung periodischer Aufgaben sowie deren Ausführungsperiode in Sekunden.
Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| name | nvarchar(150) | Aufgabenname |
| executionperiodinsec | bigint | Ausführungsintervall (Sekunden) |
| lastsuccessfulexecutiontimestamp | bigint | Zeitstempel der letzten erfolgreichen Ausführung |
Constraints und Indizes
- PK_scheduler_tasks: PRIMARY KEY (name)
segments
Die Tabelle segments enthält eine Liste von Segmenten für Archivgruppen.
Der Segment-ID-Wert wird im Namen der jeweiligen Tabelle verwendet, welche die historischen Daten für dieses Segment enthält.
Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| segment_id | bigint | Segment-ID-Nummer (IDENTITY) |
| group_name | nvarchar(50) | Name der Archivgruppe |
| status | int | Segmentstatus (0: current, 1: online, 2: onlineAndBackuped, 3: offlineAndBackuped, 4: deleted, 5: restored) |
| start_time | bigint | Segmentstartzeit |
| end_time | bigint | Segmentendzeit |
Constraints und Indizes
- PK_segments: PRIMARY KEY (segment_id)
- UK_group_name_start_time: UNIQUE (group_name, start_time)
- FK_to_archive_groups: FOREIGN KEY (group_name) REFERENCES archive_groups(group_name) ON DELETE CASCADE
systems
Die Tabelle systems enthält Informationen über die Systeme des WinCC OA-Projekts.
Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| sys_id | bigint | System-ID-Nummer |
| sys_name | nvarchar(4000) | Systemanzeigename |
Constraints und Indizes
- PK_systems: PRIMARY KEY (sys_id)
_event_*_a
Die Tabellen mit dem Muster _event_*_a speichern einfache (nicht-dynamische) Ereigniswerte. Sie werden zur Laufzeit als Teil des Archivierungs- und Segmentierungsprozesses erzeugt.
Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| element_id | bigint | DP-Element-ID |
| ts | bigint | Erstellungszeitstempel des Ereignisses |
| value_number | float | Numerischer Wert |
| status | bigint | Status-Bits |
| corrstatus | bigint | Korrektur-Status-Bits |
| manager | int | Manager, der den Wert gesetzt hat |
| corrmanager | int | Manager, der den Korrekturwert gesetzt hat |
| user_ | int | Angemeldeter Benutzer beim Setzen des Werts |
| corruser_ | int | Angemeldeter Benutzer beim Setzen des Korrekturwerts |
| corrvalue_number | float | Korrigierter numerischer Wert |
| value_timestamp | bigint | Zeitstempel-Wert |
| corrvalue_timestamp | bigint | Korrigierter Zeitstempel-Wert |
| value_string | nvarchar(max) | Zeichenkettenwert |
| corrvalue_string | nvarchar(max) | Korrigierter Zeichenkettenwert |
Constraints und Indizes
- PRIMARY KEY (element_id, ts)
_event_*_d
Die Tabellen mit dem Muster _event_*_d speichern Ereignisse für dynamische (dyn) Werte. Sie werden zur Laufzeit als Teil des Archivierungs- und Segmentierungsprozesses erzeugt.
Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| element_id | bigint | DP-Element-ID |
| ts | bigint | Erstellungszeitstempel des Ereignisses |
| position | int | Position innerhalb des dyn-Werts |
| valtype | smallint | Typ des gespeicherten Werts |
| value_dynnumber | float | Dynamischer numerischer Wert |
| value_dyntimestamp | bigint | Dynamischer Zeitstempel-Wert |
| value_dynstring | nvarchar(max) | Dynamischer Zeichenkettenwert |
Constraints und Indizes
- PRIMARY KEY (element_id, ts, position, valtype)
_alert_*_a
Die Tabellen mit dem Muster _alert_*_a speichern Alarmwerte. Sie werden zur Laufzeit als Teil des Archivierungs- und Segmentierungsprozesses erzeugt.
Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| element_id | bigint | DP-Element-ID |
| ts | bigint | Erstellungszeitstempel des Alarms |
| ack_time | bigint | Quittierzeit |
| system_time | bigint | Zeitpunkt, zu dem der Alarm vom System empfangen wurde |
| value_timestamp | bigint | Wert des Typs Zeitstempel |
| partner | bigint | Alarmzeit für den Partner |
| ack_state | int | Identifiziert, wie der Alarm quittiert wurde |
| ack_type | int | Art der Quittierung |
| partn_idx | int | Alarmindex für den Alarm-Partner |
| dest | int | Aktueller Alarmbereich |
| detail | int | Detail-ID/-Nummer |
| state | int | Status-Bits |
| ack_user | int | Benutzer, der den Alarm quittiert hat |
| value_status | bigint | Status des Werts, der den Alarm ausgelöst hat |
| value_number | float | Numerischer Wert |
| ackable | bit | Ist der Alarm quittierbar? |
| visible | bit | Ist der Alarm sichtbar? |
| direction | bit | True für CAME, false für WENT |
| inact_ack | bit | Inaktive Alarme müssen quittiert werden |
| abbr | nvarchar(max) | Kurzzeichen der Priorität |
| panel | nvarchar(max) | Panel für Quer-Selektion |
| prior | int | Priorität |
| single_ack | bit | Wurde eine Einzelquittierung durchgeführt? |
| alert_id | nvarchar(max) | ID für Multi-Instanz-Alarm |
| alert_color | nvarchar(max) | Hintergrundfarbe |
| class | nvarchar(max) | Alarmklasse |
| comment | nvarchar(max) | Benutzerkommentar |
| dest_text | nvarchar(max) | Text für den aktuellen Alarmbereich |
| text | nvarchar(max) | Status-Text für den Bereich |
| value_string | nvarchar(max) | Zeichenkettenwert |
| alert_fore_color | nvarchar(max) | Vordergrundfarbe |
| alert_font_style | nvarchar(max) | Schriftstil |
Constraints und Indizes
- PRIMARY KEY (element_id, ts, detail)
_alert_*_add
Die Tabellen mit dem Muster _alert_*_add speichern zusätzliche Werte für Alarme. Sie werden zur Laufzeit als Teil des Archivierungs- und Segmentierungsprozesses erzeugt.
Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| element_id | bigint | DP-Element-ID |
| ts | bigint | Erstellungszeitstempel des Alarms |
| valtype | bigint | Typ des gespeicherten Werts |
| add_value_timestamp | bigint | Zusätzlicher Wert des Typs Zeitstempel |
| detail | int | Detail-ID/-Nummer |
| position | int | Position innerhalb des dyn-Werts |
| add_value_number | float | Zusätzlicher numerischer Wert |
| add_value_string | nvarchar(max) | Zusätzlicher Zeichenkettenwert |
Constraints und Indizes
- PRIMARY KEY (element_id, ts, detail, position)
view_events_%system_number%
Die View view_events_%system_number% enthält die Vereinigung aller Ereignis-Segmenttabellen mit den Status CURRENT, ONLINE, ONLINE AND BACKUPED und RESTORED.
Die Erstellung der Views kann in der Backend-Konfiguration deaktiviert werden.
Das Segmentstatus-Enum (siehe segments.status) ordnet diese typischerweise den Werten 0, 1, 2, 5 zu.
Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| element_id | bigint | DP-Element-ID |
| element_name | nvarchar(max) | DP-Elementname |
| sys_id | bigint | System-ID |
| ts | bigint | Erstellungszeitstempel des Ereignisses |
| position | int | Position innerhalb des dyn-Werts |
| value_number | float | Numerischer Wert |
| status | bigint | Status-Bits |
| corrstatus | bigint | Korrektur-Status-Bits |
| manager | int | Manager, der den Wert gesetzt hat |
| corrmanager | int | Manager, der den Korrekturwert gesetzt hat |
| user_ | int | Angemeldeter Benutzer beim Setzen eines Werts |
| corruser_ | int | Angemeldeter Benutzer beim Setzen eines Korrekturwerts |
| corrvalue_number | float | Korrigierter numerischer Wert |
| value_timestamp | bigint | Zeitstempel-Wert |
| corrvalue_timestamp | bigint | Korrigierter Zeitstempel-Wert |
| value_string | nvarchar(max) | Zeichenkettenwert |
| corrvalue_string | nvarchar(max) | Korrigierter Zeichenkettenwert |
| valtype | smallint | Typ des gespeicherten Werts |
| value_dynnumber | float | Dynamischer numerischer Wert |
| value_dyntimestamp | bigint | Dynamischer Zeitstempel-Wert |
| value_dynstring | nvarchar(max) | Dynamischer Zeichenkettenwert |
view_alarms_%system_number%
Die View view_alarms_%system_number% enthält die Vereinigung aller Alarm-Segmenttabellen mit den Status ONLINE, CURRENT, ONLINE AND BACKUPED und RESTORED.
Spalten
| Spalte | Typ | Beschreibung |
|---|---|---|
| element_name | nvarchar(max) | DP-Elementname |
| element_id | bigint | DP-Element-ID |
| sys_id | bigint | System-ID |
| ts | bigint | Alarm-Erstellungszeit |
| ack_time | bigint | Quittierzeit |
| system_time | bigint | Zeitpunkt, zu dem der Alarm vom System empfangen wurde |
| value_timestamp | bigint | Wert des Typs Zeitstempel |
| partner | bigint | Alarmzeit für den Partner |
| ack_state | int | Identifiziert, wie der Alarm quittiert wurde |
| ack_type | int | Art der Quittierung |
| partn_idx | int | Alarmindex für den Alarm-Partner |
| dest | int | Aktueller Alarmbereich |
| detail | int | Detail-ID/-Nummer |
| state | int | Status-Bits |
| ack_user | int | Benutzer, der den Alarm quittiert hat |
| value_status | bigint | Status des Werts, der den Alarm ausgelöst hat |
| value_number | float | Numerischer Wert |
| ackable | bit | Ist der Alarm quittierbar? |
| visible | bit | Ist der Alarm sichtbar? |
| direction | bit | True für CAME, false für WENT |
| inact_ack | bit | Inaktive Alarme müssen quittiert werden |
| abbr | nvarchar(max) | Kurzzeichen der Priorität |
| panel | nvarchar(max) | Panel für Quer-Selektion |
| prior | int | Priorität |
| single_ack | bit | Wurde eine Einzelquittierung durchgeführt? |
| alert_id | nvarchar(max) | ID für Multi-Instanz-Alarm |
| alert_color | nvarchar(max) | Hintergrundfarbe |
| class | nvarchar(max) | Alarmklasse |
| comment | nvarchar(max) | Benutzerkommentar |
| dest_text | nvarchar(max) | Text für den aktuellen Alarmbereich |
| text | nvarchar(max) | Status-Text für den Bereich |
| value_string | nvarchar(max) | Zeichenkettenwert |
| alert_fore_color | nvarchar(max) | Vordergrundfarbe |
| alert_font_style | nvarchar(max) | Schriftstil |
| valtype | bigint | Typ des gespeicherten (dyn) Werts |
| position | int | Position innerhalb des dyn-Werts |
| add_value_number | float | Zusätzlicher numerischer Wert |
| add_value_string | nvarchar(max) | Zusätzlicher Zeichenkettenwert |
| add_value_timestamp | bigint | Zusätzlicher Wert des Typs Zeitstempel |
