Erweiterung der Struktur

Mit Docusnap können bei Bedarf die bestehenden Tabellenstrukturen erweitert werden. Dieses Ziel kann mithilfe der Docusnap Administration durch Klick auf die Schaltfläche Tabellen verwalten, erreicht werden.

Docusnap-Extras-Metatabellen-verwalten

In dieser Registerkarte werden alle Beschreibungen zur Datenbankstruktur von Docusnap angezeigt. Auf der linken Seite werden alle bestehenden Tabellen und Sichten aufgelistet. In dieser Tabelle steht ein Filter zur Verfügung um die gesuchte Tabelle schneller zu finden. Auf der rechten oberen Seite werden die Details zu der ausgewählten Tabelle angezeigt. Auf der rechten unteren Seite werden die Felder der Tabelle angezeigt. Um die jeweiligen Einstellungen für die Datenfelder der Tabelle vorzunehmen oder weiter Felder anzulegen, muss über die Schaltfläche Felder bearbeiten der Dialog für die Anpassung der Felder geöffnet werden.

Docusnap-Extras-Metatabellen-verwalten-Felder

Grundsätzlich wird innerhalb von Docusnap zwischen drei verschiedenen Typen von Tabellen unterschieden:

TypBeschreibung
TabelleTabellen sind real in der Datenbank vorhandene Tabellen, die für die Verwendung in Docusnap hier beschrieben werden. Alle Tabellen beginnen mit dem Präfix “t”.
SichtSichten sind Tabellen, die durch einen SQL-Select-Befehl generiert werden. Sichten können Daten aus mehreren Tabellen enthalten. Die SQL-Befehle können durch Platzhalter (z.B. FilterID) ergänzt werden, die Docusnap zur Laufzeit mit den richtigen Werten befüllt. Alle Sichten beginnen mit dem Präfix “v”.
VirtuellVirtuelle Tabellen werden zur Formatierung von Tabellen verwendet, die z.B. in den Docusnap-Assistenten benutzt werden. Außerdem werden sie im Baum verwendet, um Daten aus verschiedenen Datenbanktabellen in einer Tabelle ausgeben zu können. Alle Virtuellen Tabellen beginnen mit dem Präfix “i”.

Eigenschaften für alle Tabellen

Für die Definition einer Tabelle müssen verschiedene Eigenschaften definiert werden. Die Anzahl der möglichen Eigenschaften hängt vom Typ der Tabelle ab. Folgende Eigenschaften sind bei allen Tabellen verfügbar bzw. zu befüllen:

EigenschaftBeschreibung
TabellennameEindeutiger Name der Tabelle
Je nach ausgewähltem Typ der Tabelle werden die Präfixe i,v oder t verwendet. Tabellen, die nicht durch den Hersteller definiert wurden, erhalten zusätzlich das Präfix x (z.B. xtSLA).
NamespaceBeim Anlegen neuer Tabelle kann im Kombinationsfeld ein Namespace eingetragen oder ein bestehender Namespace ausgewählt werden. Durch den Namespace kann beim Export der benutzerdefinierten Tabellen definiert werden, welche Tabellen exportiert werden sollen.
PrimärschlüsselEin Feld in der Tabelle, das jeden Datensatz eindeutig identifiziert. Innerhalb Docusnap sind dies im Normalfall Felder vom Typ LONG und Auto-Inkrementfelder.
FremdschlüsselDas Feld, das die Beziehung zu einer anderen Tabelle in der Hierarchie höher darstellt.
AnzeigefeldDas Feld in der Tabelle, das zur Ausgabe der Textwerte in den Hierarchien (z.B. Inventar, IT-Sicherheit usw.) verwendet wird.
VergleichsfeldFür den Datenvergleich wird ein Feld benötigt, das zwischen zwei Snapshots zur Identifizierung von zwei Datensätzen herangezogen werden kann. Ein sinnvolles Feld kann hier z.B. eine Seriennummer oder ein Rechnername sein.
Name englisch, Name deutschBezeichnung der Tabelle in der jeweiligen Sprache.

Eigenschaften für Sichten

SQL Statement

Sichten sind Tabellen, die auf Basis eines SQL-Select-Befehles gebildet werden. Docusnap unterstützt dies mit einer Vielzahl von Variablen, die vor der Ausführung des Select-Befehles ersetzt werden.

Einschränkungen bei der Verwendung von SQL in Sichten

Damit die Daten in einer für die Performance optimierten Form vorliegen, werden die Statements bei der Ausführung angepasst und in eine zusätzliche Select-Hülle eingebettet. Dadurch werden die Ergebnisse so aufbereitet, dass sie effizient verarbeitet und angezeigt werden können. Dies kann jedoch bedeuten, dass das ursprüngliche Statement angepasst werden muss, da nicht alle SQL-Konstrukte in dieser Form wie gewohnt funktionieren.

Alles, was vor dem ersten SELECT steht, bleibt unverändert bestehen. Erst mit dem ersten SELECT-Statement beginnt die Anpassung. Damit funktioniert der Großteil der Anwendungsfälle, auch wenn komplexere SQL-Strukturen unter Umständen nicht fehlerfrei unterstützt werden.

Bei den SQL-Statements in Docusnap gibt es Besonderheiten und Einschränkungen, die berücksichtigt werden müssen.

Zulässige und unzulässige Anweisungen

  • CTEs (Common Table Expressions) und Variablendefinitionen wie DECLARE können auf oberster Ebene eingesetzt werden. Zu beachten ist jedoch, dass ihre Verwendung insbesondere im Zusammenspiel mit Docusnap Connect, in IT-Konzepten, im Reiter Analyse sowie in weiteren Bereichen, in denen Objekte verarbeitet werden, zu Fehlern führen können.
  • Aktionsanweisungen wie INSERT, UPDATE oder DELETE werden nicht unterstützt und dürfen daher nicht verwendet werden.
  • ORDER BY-Klauseln werden in Sichten nicht unterstützt und bei der Anpassung entfernt. Die Sortierung muss stattdessen über das Metaobjekt erfolgen. Es wird ausschließlich die dort hinterlegte Sortierspalte mit der angegebenen Richtung berücksichtigt.
  • Sichten, die Funktionsaufrufe auf Basis der Variablenübergabe {FilterID} enthalten, können in Connect nicht verwendet werden.
  • Sichten, die im obersten SELECT ein TOP 1 enthalten, führen in Connect zu unvollständigen Ergebnissen.

Metaschema-Konsistenz

Fehler im Metaschema, etwa fehlende Felder oder Referenzen, können dazu führen, dass eine View keine Daten liefert; im Grid werden in diesem Fall nur die Baumknoten angezeigt. Tritt ein solcher Fehler auf, erscheint beim Abfragen der Daten (Klick auf einen Knoten im Baum) eine entsprechende Meldung in Docusnap.

Verwendung von SELECT * vermeiden

Es wird empfohlen, in Sicht-Definitionen kein SELECT * zu verwenden. Hintergrund ist, dass eindeutige Feldnamen erforderlich sind.

In Sichten kann es zu Konflikten kommen, beispielsweise durch doppelte Spaltennamen wie HostID. Dies tritt insbesondere dann auf, wenn mehrere Tabellen in einer Sicht miteinander gejoint werden, da in solchen Fällen häufig gleichlautende Feldnamen entstehen.

Daher gilt die Empfehlung für Sichten immer eine explizite Spaltenauswahl zu verwenden.

Variablen

Docusnap bietet folgende Variablen zur Verwendung in den Befehlen an. Wichtig dabei ist, dass die Variablen immer durch eine Klammerung {Variable} eingefasst werden.

VariableBeschreibung
{FilterID}Die Variable FilterID wird immer durch den Primärschlüssel des übergeordneten Objektes ersetzt.

Beispiel:
Der Befehl in Docusnap
SELECT HostID, HostName, DomainID FROM tHosts WHERE DomainID = {FilterID} order by hostname

ergibt bei der Ausführung z.B.
SELECT HostID, HostName, DomainID FROM tHosts WHERE DomainID = 1 order by hostname
{LANGUAGEID}Die Variable wird durch den Integer-Code für die jeweilige Sprache ersetzt.
Deutsch = 0
Englisch = 1
{Feldname}Über diese Konstruktion kann auf jedes Datenfeld in einem übergeordneten Datenobjekt zugegriffen werden.
Achtung: Dies funktioniert nur bei Datenobjekten und nicht bei Überschriften.

Der jeweilige SQL-Befehl kann direkt in das Feld SQL-Statement eingegeben werden, in dem der Befehl eingegeben oder editiert werden kann.

Primäre Tabelle

Da bei SQL-Select-Befehlen mehrere Tabellen miteinander verbunden werden können, weiß Docusnap im Falle eines Löschkommandos nicht, auf welche Tabelle sich der Primärschlüssel bezieht. Durch das Feld Primäre Tabelle kann die Tabelle angegeben werden, in der der Datensatz gelöscht werden soll. Wenn in dieses Feld keine Daten eingegeben werden, ist ein Löschen von Metaobjekten, die sich auf diese Tabelle beziehen, nicht möglich.

Für Objekte im Baum können Eingabemasken erstellt werden, die anschließend beim Knoten angezeigt werden und zur Bearbeitung der Daten dienen. Bei Knoten mit Sichten ist die Erstellung solcher Eingabemasken für die Datenbearbeitung nur möglich, wenn eine primäre Tabelle definiert wurde. Nur die Daten der primären Tabelle können über die Eingabemaske geändert werden. Daten aus gejointen Tabellen sind von der Bearbeitung ausgeschlossen und können lediglich im Grid angezeigt werden. Der Fremdschlüssel der primären Tabelle muss mit dem Primärschlüssel des übergeordneten Knotens übereinstimmen. Nur so kann sichergestellt werden, dass eine korrekte Zuordnung zwischen den Daten des Knotens und den Daten der übergeordneten Struktur besteht.

SNMP-Statements

Neben der Verwendung von SQL-Statements zur Ausgabe von Tabellen bietet Docusnap eine spezielle Syntax für die Ausgabe von SNMP-Tabellen. Bei der SNMP-Inventarisierung werden MIBs genutzt.

Schritt 1: Benötigte OIDs ermitteln

Zunächst werden die entsprechenden OIDs benötigt:

  • 1.3.6.1.2.1.4.20.1.1 – IPAddress
  • 1.3.6.1.2.1.4.20.1.3 – SubnetMask
  • 1.3.6.1.2.1.4.20.1.2 – InterfaceID

Schritt 2: Neue View in der Docusnap-Administration anlegen

Um die Ergebnisse auszugeben, wird in das Feld SQL-Statement zuerst der Text SNMP: geschrieben, gefolgt von Klammern, in denen für jede MIB die OID und eine Bezeichnung (durch Komma getrennt) eingetragen werden. Mehrere MIBs werden durch Semikolons getrennt. Wichtig: Im SQL-Statement dürfen keine Zeilenumbrüche verwendet werden.

Beispiel:

SNMP:(1.3.6.1.2.1.4.20.1.1,IPAddress;1.3.6.1.2.1.4.20.1.3,SubnetMask;1.3.6.1.2.1.4.20.1.2,InterfaceID)

Einmalige Werte pro Gerät ausgeben

Soll ein Wert pro SNMP-Gerät nur einmalig ausgegeben werden, beginnt das Statement mit SNMP-Single:.

Beispiel:

SNMP-Single:(1.3.6.1.2.1.43.8.2.1.14.1.1,Manufacturer;1.3.6.1.2.1.43.5.1.1.17.1,SerialNumber)

Berechnete Werte (Division)

Falls für einen Wert eine Division zweier Spalten benötigt wird, z. B. für den Tonerstand, werden die OIDs der beiden Spalten mit einem Schrägstrich / getrennt. Bei der Ausführung wird der Quotient ausgegeben.

Beispiel:

SNMP-Single:(1.3.6.1.2.1.43.11.1.1.9.1.1/1.3.6.1.2.1.43.11.1.1.8.1.1,TonerBlack)

Schritt 3: Tabellenspalten anlegen

  • Für jede im Statement definierte Bezeichnung wird eine Spalte angelegt.
  • Zusätzlich ist die Spalte ValueID erforderlich, die als Primärschlüssel dient.
  • Die Option Feld in Listen anzeigen kann für ValueID deaktiviert werden.

Nachdem alle Spalten gespeichert wurden, muss für die Tabelle ein Primärschlüssel sowie ein Anzeigefeld definiert werden.

Schritt 4: Sicht verwenden

Die erstellte Sicht kann anschließend im Datenbaum einem Knoten zugeordnet und verwendet werden.

IT-Asset Statements

Es ist möglich IT-Assets an einer beliebigen Stelle im Baum auszugeben, zum Beispiel unterhalb eines Kontakts, dem sie zugewiesen wurden. Dafür muss eine Sicht mit SQL-Statement erstellt werden das alle benötigten ObjectIDs auflistet. Der PropertyName wird mit dem Namen der Eigenschaft abgeglichen und der ObjectValue mit dem Primärschlüssel des übergeordneten Objekts. Da die Spalte ObjectValue vom Typ Text ist, muss die {FilterID} mit ’ ’ als Text angegeben werden. Durch eine Abfrage auf die {AccountID} kann gefiltert werden, dass nur Daten der jeweiligen Firma angezeigt werden. Im SQL Statement muss nur die ObjectID enthalten sein und die ObjectID muss als Spalte angelegt werden. Anschließend kann diese Sicht für ein Metaobjekt gewählt werden um die IT Assets anzuzeigen. Das folgende SQL-Statement kann als Basis für das IT-Asset-Statement verwendet werden.

select tGOValue.ObjectID
from tGODirectory, tGO, tGOValue, tGOProperty
where tGODirectory.DirectoryID = tGO.DirectoryID and
tGO.ObjectID = tGOValue.ObjectID and
tGOValue.PropertyID = tGOProperty.PropertyID
and tGOProperty.PropertyName = 'Name of the Property' and
tGOValue.ObjectValue = '{FilterID}' and
tGODirectory.AccountID = {AccountID}

Datenfelder

Datenfelder stellen in einer Tabelle die verschiedenen Spalten dar. Den Feldern werden in Docusnap bestimmte Typen zugewiesen und auch die sprachliche Darstellung (Deutsch oder Englisch) erfolgt auf Basis dieser Metabeschreibung.

EigenschaftBeschreibung
FeldnameHier wird ein eindeutiger Feldname vergeben. Verweisfelder sollten immer auf der Endung ID enden, um sie besser identifizieren zu können.
Felder, die nicht vom Hersteller definiert werden, erhalten als Präfix ein x, um Namenskollisionen zu vermeiden.
DatentypTyp des Feldes

Blob: Binärfeld zur Speicherung von Binärdaten wie z.B. Anlagen

Boolean: Ja/Nein-Feld

Byte: Nummerisches Ganzzahlfeld mit Werten von 0 bis 255

Date: Datumsfeld

Decimal: Dezimalfeld für Gleitkommazahlen

GUID: GUID-Wert

Kombination: Feld zur Kombination von mehreren Feldern. Feldnamen werden mit @-Zeichen identifiziert, normale Texte mit Hochkommas ‘Text’ geklammert. Durch den Operator + können die Werte verbunden werden.
Texte in <> Klammern werden nur angezeigt, wenn nach ihnen noch Texte folgen.

Beispiel: @Lastname + '<, >' + @Firstname

Ausgabe:
Maier, Franz
oder, falls kein Vorname ausgefüllt ist,
Maier

Kombinationsfelder sollten ausschließlich als Anzeigefelder benutzt werden.

Int: Ganzzahl

BigInt: Der Datentyp BigInt ist für Fälle bestimmt, in denen ganzzahlige Werte den durch den Datentyp int unterstützten Bereich überschreiten.

Memo: Text ohne Längenbeschränkung

String: Text

SID: Konvertiert eine SID in den zugehörigen ADS Namen. Die Konvertierung ist nur möglich, wenn die Tabelle oder Sicht an einer Stelle eingebunden wird, bei der sich irgendwo in der übergeordneten Struktur der Knoten für die Firma befindet.

Version: Versionen stehen meist in einem String-Feld und würden daher alphabetisch sortiert werden. Um Version 12 nach Version 4 auszugeben, wird der Datentyp Version verwendet.

Zeit: Der Datentyp Zeit wird verwendet um einen Zeitpunkt auszugeben, wenn der Wert in Ticks inventarisiert wird.
ReferenzÜber das Feld Referenz ist es möglich, eine ID in einen lesbaren Namen zu transferieren. Dazu muss ein Verweis auf eine Tabelle [TabellenName] oder ein Verweis auf einen Initialwert {WertName} eingegeben werden.
Wenn das Referenzfeld befüllt ist, nimmt Docusnap den nummerischen Inhalt des Feldes und führt eine Abfrage auf der angegebenen Tabelle oder in den Initialwerten mit Filter auf den jeweiligen Primärschlüssel durch. Ausgegeben wird dann der Wert, der in der Zieltabelle als Anzeigefeld definiert ist.

Beispiel: Feld DomainID, Referenz [tdomains]
Statt z.B. der DomainID 1 wird dann docusnap.intern ausgegeben.
Name, Text (Deutsch, Englisch)Bezeichnung des Feldes in den jeweiligen Sprachen. Dieser Wert ist auch später in den Listen als Spaltenüberschrift sichtbar.
SortierungDie Reihenfolge der Felder in Listen ist nicht alphabetisch, sondern über diesen Wert bestimmt.
AnzeigegrößeHier kann eine Spaltenbreite in den Ausgabelisten definiert werden (in Pixel). Falls kein Wert angegeben wird, verwendet Docusnap einen Standardwert von 80 Pixel.
FeldlängeDieses Feld kann nur bei dem Datentyp String definiert werden. Hier kann die maximale zulässige Anzahl von Zeichen bestimmt werden.
Import-VerweisDieses Feld definiert Felder von Verweisen, die für den Datenimport abgeglichen werden müssen. Das sind im wesentlichen Verweise wie z. B. Kommentartypen, Passworttypen usw.
FaktorHier kann ein Divisor zur Umrechnung von Zahlenwerten bestimmt werden. Das Feld ist nur bei nummerischen Datentypen aktiv.
Zum Beispiel würde ein Faktor von 1024 einen Wert von Byte in Kilobyte umrechnen.
ZahlenformatHier können nach Standardkonventionen Formatierungen für Zahlenwerte vorgenommen werden.
Gültige Platzhalter sind das #-Zeichen für beliebige Zahlenwerte und die Ziffer 0 für Zahlenwerte, die, wenn sie zu klein sind, mit führenden 0 aufgefüllt werden.
Tausendertrennzeichen ist das Komma “,”, das Kommazeichen ist der “.”.

Beispiele:
#,##0.00 MB
00 h
IconMit der Eigenschaft Icon kann pro Feld ein spezifisches Icon hinterlegt werden. Dies ist nur notwendig, wenn das Metaobjekt, welches auf die Tabelle verweist, eine vertikale Ausrichtung hat.
NamespaceWenn die Tabellen des Herstellers um Spalten erweitert werden, dann kann für die erstellte Spalte der Namespace gewählt oder ein neuer eingetragen werden. Beim Export eines Customizings kann über die Namespaces definiert werden, welche Spalten berücksichtigt werden sollen. Der Namespace der Spalte kann nach dem Speichern nicht mehr geändert werden.
Feld in Listen anzeigenWenn diese Option aktiviert ist, ist das Feld in den Listen von Docusnap sichtbar.
Feld in Webclient anzeigenWenn diese Option aktiviert ist, wird das Feld in den Listen im Webclient angezeigt. Wenn bei einer Tabelle keine Spalten für den Webclient ausgewählt wurden, setzt Docusnap diese Option für die nach der Sortierung ersten drei Spalten. Diese Auswahl kann im Nachhinein bearbeitet werden.
Nicht vergleichenDurch Aktivieren dieser Option kann verhindert werden, dass dieses Feld in den Datenvergleich einbezogen wird. Das ist z.B. beim verfügbaren Speicherplatz auf einer Festplatte sinnvoll, da dieser praktisch immer verändert sein wird.
NULL-Werte nicht anzeigenWenn bei der Ausgabe der Tabelle Vertikal ausgewählt wird, wird durch diese Option festgelegt, ob diese Spalte ausgegeben wird, wenn der Wert in der Datenbank NULL ist.

ADS Eigenschaften ausgeben

Die Werte der Active Directory Eigenschaften werden in den Tabellen tADSObjectValue (nur ein Wert pro AD Objekt) und in der Tabelle tADSObjectMultiValue (mehrere Werte pro AD Objekt möglich) gespeichert. Einige dieser Werte müssen für die Ausgabe unterschiedlich formatiert werden. In den Tabellen gibt es die Spalte ADSPropertyID, der Wert dieser Spalte wird von Docusnap verwendet um die AD Eigenschaften in der Spalte ADSObjectValue richtig darzustellen. Wenn eine Tabelle oder eine Sicht eine ADSObjectValue Spalte enthält wird immer eine ADSPropertyID Spalte erwartet.

Wenn eine Sicht erstellt wird, in der mehrere Spalten mit speziellen AD Eigenschaften enthalten sind, kann die Formatierung nicht über die ADSPropertyID Spalte definiert werden. Dafür wird bei der jeweiligen Spalte eine Referenz erstellt. Mit AD_PROP_ wird definiert, dass es sich um eine Referenz für AD Eigenschaften handelt. Beispielsweise wird im Feld Referenz {AD_PROP_whenCreated} für die Eigenschaft whenCreated (Erstelldatum des AD Objekts) eingetragen. Die Spalte, die den Wert enthält, darf nicht ADSObjectValue heißen, sondern wird im SQL Statement mit AS umbenannt.

Export und Import der Datenbank

Wenn die Daten von benutzerdefinierten Tabellen beim Datenbankimport bzw. -export berücksichtigt werden sollen, müssen diese Tabellen im Importbaum eingefügt werden.