MS SQL Schema

Dieses Dokument beschreibt die statischen Datenbankobjekte, die von schema.sql erstellt werden.

Abbildung 1. MS SQL schema
info:
Alle Objekte werden im Schema dbo erstellt, sofern nicht anders angegeben.

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_idbigintElement-ID
group_namenvarchar(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.

Hinweis:

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.

Hinweis:

Die Erstellung der Views kann in der Backend-Konfiguration deaktiviert werden.

Hinweis:

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.

Anmerkung:
Die Erstellung der Views kann in der Backend-Konfiguration deaktiviert werden.
Anmerkung:
Dieser Platzhalter view_alarms_%system_number% enthält die tatsächliche Systemnummer.

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