Lizenzen in Benutzung
-
Der Report ist wahrscheinlich nicht das, was Du suchst… Habe ihn trotzdem noch ein bisschen "schoener" gemacht
SELECT
isys_obj__title AS 'Software',
isys_cats_lic_list__key AS 'Lizenzschluessel',
(CASE
WHEN isys_cats_lic_list__type = 2 THEN 'Volumenlizenz'
WHEN isys_cats_lic_list__type = 1 THEN 'Einzellizenz'
END) AS 'Lizenztyp',
isys_cats_lic_list__amount AS 'Anzahl Lizenzen'FROM isys_obj
LEFT JOIN isys_cats_lic_list AS j1
ON j1.isys_cats_lic_list__isys_obj__id = isys_obj__idLEFT JOIN isys_obj_type AS j2
ON j2.isys_obj_type__id = isys_obj__idWHERE
isys_obj__isys_obj_type__id = 33ORDER BY Software, Lizenzschluessel
Ich habe bisher noch nicht rausgefunden, in welcher Tabelle die Lizenzbenutzung aufgeloest wird...
Quasi die Grundlagen um die von Dir genannte Statistik zu erstellen... -
Hallo jkondek,
viele Dank für das Feedback,
Diese Abfrage habe ich mir Anfangs auch selbst zusammengebastelt.
Mein Verständnisproblem liegt in der Verbindung zur Beziehung zu den benutzen Lizenzen.
Wo werden diese verknüpft, sodass man mit COUNT(…) und GRPOUP BY diese Zählen kann.Viel Grüße
Schmidt -
Dafuer benoetigst Du prinzipiell (erstmal) nur zwei Tabellen:
isys_cats_lic_list
isys_catg_application_listIn der Spalte isys_cats_lic_list__amount steht die Anzahl der Lizenzschluessel und sobald eine Lizenzzuweisung erfolgt, steht das in der Tabelle isys_catg_application_list.
Bei der Erstellung eines entsprechenden Reports ist mir folgender Fehler aufgefallen:
Sobald die Anzahl einer Volumenlizenz > 1 ist, wird bei der Berechnung von "Lizenzen in Benutzung" eine Lizenz (aus Prinzip?) gezaehlt, obwohl diese gar nicht in Benutzung ist. Sobald mindestens eine Lizenz vergeben ist, ist die Berechnung richtig…
-
Hallo zusammen,
bitte vergesst nicht bei eigenen Reports / SQL-Abfragen den Status zu prüfen. Die gezählten Objekte / Lizenzen müssen folgende Kriterien erfüllen:
- Das Lizenz-Objekt muss den Status Normal haben
- Der Lizenzschlüssel muss den Status Normal haben
- Das referenzierte Objekt (z.B. ein Server) muss den Status Normal haben
- Die "Softwarezuweisung" (des Servers), in der die Lizenz verwendet wird, muss den Status Normal haben
Viele Grüße
Leo -
Hallo Leo,
Hallo zusammen,
bitte vergesst nicht bei eigenen Reports / SQL-Abfragen den Status zu prüfen. Die gezählten Objekte / Lizenzen müssen folgende Kriterien erfüllen:
- Das Lizenz-Objekt muss den Status Normal haben
- Der Lizenzschlüssel muss den Status Normal haben
Bei diesen beiden Bedingungen stimme ich Dir zu.
- Das referenzierte Objekt (z.B. ein Server) muss den Status Normal haben
- Die "Softwarezuweisung" (des Servers), in der die Lizenz verwendet wird, muss den Status Normal haben
Wenn ich eine Uebersicht ueber alle Lizenzen haben moechte (egal ob unbenutzt, benutzt oder ueberzogen), darf der Status hier nicht auf "normal" geprueft werden, da somit ungenutzte Lizenzen ausser Acht gelassen werden (da diese kein referenziertes Objekt und keine Softwarezuweisung nachweisen koennen).
In meinem Report sollen alle Lizenzen beruecksichtigt werden, daher nutze ich nur die ersten beiden Bedingungen.
Trotzdem bleibt folgender Fehler:Sobald die Anzahl einer Volumenlizenz > 1 ist, wird bei der Berechnung von "Lizenzen in Benutzung" eine Lizenz (aus Prinzip?) gezaehlt, obwohl diese gar nicht in Benutzung ist. Sobald mindestens eine Lizenz vergeben ist, ist die Berechnung richtig…
-
Die einfachste Loesung ist die Benutzung des Reports Lizenzauslastung aus dem Online Repository…
SELECT
isys_obj__id AS id,
isys_obj__title AS Lizenzobjekt,
isys_cats_lic_list__key ASKey
,
isys_cats_lic_list__amount AS LC__CMDB__CATG__LICENCE_TOTAL,
COUNT(isys_catg_application_list__id ) AS LC__CMDB__CATG__LICENCE_IN_USEFROM isys_cats_lic_list
INNER JOIN isys_obj
ON isys_obj__id = isys_cats_lic_list__isys_obj__idLEFT JOIN isys_catg_application_list
ON isys_catg_application_list__isys_cats_lic_list__id = isys_cats_lic_list__idGROUP BY isys_cats_lic_list__id
Es geht aber auch noch schoener
SELECT
j4.isys_obj__id AS id,
j4.isys_obj__title AS 'Software',
isys_cats_lic_list__key AS 'Lizenzschluessel',
(CASE
WHEN isys_cats_lic_list__type = 2 THEN 'Volumenlizenz'
WHEN isys_cats_lic_list__type = 1 THEN 'Einzellizenz'
END) AS 'Lizenztyp',
isys_cats_lic_list__amount AS 'Anzahl Lizenzen',
COUNT(isys_catg_application_list__id) AS 'Lizenzen in Benutzung',
(CASE
WHEN COUNT(isys_catg_application_list__id) = 0 THEN 'Alle Lizenzen frei'
WHEN (COUNT(isys_catg_application_list__id)) = isys_cats_lic_list__amount THEN 'Alle Lizenzen in Benutzung'
WHEN (COUNT(isys_catg_application_list__id)) < isys_cats_lic_list__amount THEN CONCAT((isys_cats_lic_list__amount - COUNT(isys_catg_application_list__id)),' Lizenzschluessel noch verfuegbar!')
WHEN (COUNT(isys_catg_application_list__id)) > isys_cats_lic_list__amount THEN CONCAT(((COUNT(*)) - isys_cats_lic_list__amount),' Lizenzenschluessel ueberzogen!')
END) AS 'Status'FROM isys_obj AS j4
LEFT JOIN isys_cats_lic_list AS j1
ON j1.isys_cats_lic_list__isys_obj__id = j4.isys_obj__idLEFT JOIN isys_obj_type AS j2
ON j2.isys_obj_type__id = j4.isys_obj__idLEFT JOIN isys_catg_application_list
ON isys_catg_application_list__isys_cats_lic_list__id = isys_cats_lic_list__idLEFT JOIN isys_connection
ON isys_connection__id = isys_catg_application_list__isys_connection__idLEFT JOIN isys_obj AS j3
ON j3.isys_obj__id = isys_connection__isys_obj__idLEFT JOIN isys_obj AS j5
ON j5.isys_obj__id = isys_catg_application_list__isys_obj__idWHERE TRUE
AND j4.isys_obj__status = 2
AND j1.isys_cats_lic_list__status = 2
AND j4.isys_obj__isys_obj_type__id = 33GROUP BY isys_cats_lic_list__id
ORDER BY Software, Lizenztyp
Ich hoffe ich konnte weiterhelfen!
Viele Gruesse,
jkondek -
Hallo zusammen,
wir haben Gestern den Report von jkondek in einer Schulung vorgestellt und zusammen mit den Kollegen eine Lösung erarbeitet:
SELECT j4.isys_obj__id AS __id__, j4.isys_obj__title AS 'Software', isys_cats_lic_list__key AS 'Lizenzschluessel', (CASE WHEN isys_cats_lic_list__type = 2 THEN 'Volumenlizenz' WHEN isys_cats_lic_list__type = 1 THEN 'Einzellizenz' END) AS 'Lizenztyp', isys_cats_lic_list__amount AS 'Anzahl Lizenzen', COUNT(isys_catg_application_list__id) AS 'Lizenzen in Benutzung', (CASE WHEN COUNT(isys_catg_application_list__id) = 0 THEN 'Alle Lizenzen frei' WHEN (COUNT(isys_catg_application_list__id)) = isys_cats_lic_list__amount THEN 'Alle Lizenzen in Benutzung' WHEN (COUNT(isys_catg_application_list__id)) < isys_cats_lic_list__amount THEN CONCAT((isys_cats_lic_list__amount - COUNT(isys_catg_application_list__id)),' Lizenzschluessel noch verfuegbar!') WHEN (COUNT(isys_catg_application_list__id)) > isys_cats_lic_list__amount THEN CONCAT(((COUNT(*)) - isys_cats_lic_list__amount),' Lizenzenschluessel ueberzogen!') END) AS 'Status' FROM isys_obj AS j4 LEFT JOIN isys_cats_lic_list AS j1 ON j1.isys_cats_lic_list__isys_obj__id = j4.isys_obj__id LEFT JOIN isys_obj_type AS j2 ON j2.isys_obj_type__id = j4.isys_obj__id LEFT JOIN isys_catg_application_list ON isys_catg_application_list__isys_cats_lic_list__id = isys_cats_lic_list__id LEFT JOIN isys_connection ON isys_connection__id = isys_catg_application_list__isys_connection__id LEFT JOIN isys_obj AS j3 ON j3.isys_obj__id = isys_connection__isys_obj__id LEFT JOIN isys_obj AS j5 ON j5.isys_obj__id = isys_catg_application_list__isys_obj__id WHERE TRUE AND IFNULL (j5.isys_obj__status, 2) = 2 AND j4.isys_obj__status = 2 AND j1.isys_cats_lic_list__status = 2 AND j4.isys_obj__isys_obj_type__id = 33 GROUP BY isys_cats_lic_list__id ORDER BY Software, Lizenztyp; ```Es wurde lediglich die Bedingung "AND IFNULL (j5.isys_obj__status, 2) = 2" hinzugefügt. Wir überlegen derzeit diesen Report in die Online Reports zu übernehmen :) Viele Grüße Leo
-
Hallo zusammen,
ich habe noch ein Variante erstellt. Der Report ist voreingestellt nach dem Status abwärts sortiert. Mlögliche Stati sin 'Alle Lizenzen frei', 'Alle Lizenzen in Benutzung', 'Lizenzen verfuegbar (X Lizenzen)' und 'Lizenzen überbucht (X Lizenzen)'. So stehen die überbuchten Lizenzen immer als erstes in der Liste.
SELECT obj_main.isys_obj__id AS __id__, obj_main.isys_obj__title AS 'Software', j1.isys_cats_lic_list__key AS 'Lizenzschluessel', CASE WHEN j1.isys_cats_lic_list__type = 2 THEN 'Volumenlizenz' WHEN j1.isys_cats_lic_list__type = 1 THEN 'Einzellizenz' END AS 'Lizenztyp', j1.isys_cats_lic_list__amount AS 'Anzahl Lizenzen', COUNT(j3.isys_catg_application_list__id) AS 'Lizenzen in Benutzung', CASE WHEN COUNT(j3.isys_catg_application_list__id) = 0 THEN 'Alle Lizenzen frei' WHEN COUNT(j3.isys_catg_application_list__id) = j1.isys_cats_lic_list__amount THEN 'Alle Lizenzen in Benutzung' WHEN COUNT(j3.isys_catg_application_list__id) < j1.isys_cats_lic_list__amount THEN CONCAT('Lizenzen verfuegbar (', j1.isys_cats_lic_list__amount - COUNT(j3.isys_catg_application_list__id), ' Lzenzen)') WHEN COUNT(j3.isys_catg_application_list__id) > j1.isys_cats_lic_list__amount THEN CONCAT('Lizenzen überbucht (', COUNT(j3.isys_catg_application_list__id) - isys_cats_lic_list__amount, ' Lizenzen)') END AS 'Status' FROM isys_obj AS obj_main LEFT JOIN isys_cats_lic_list AS j1 ON j1.isys_cats_lic_list__isys_obj__id = obj_main.isys_obj__id LEFT JOIN isys_obj_type AS j2 ON j2.isys_obj_type__id = obj_main.isys_obj__id LEFT JOIN isys_catg_application_list AS j3 ON j3.isys_catg_application_list__isys_cats_lic_list__id = j1.isys_cats_lic_list__id LEFT JOIN isys_connection AS j4 ON j4.isys_connection__id = j3.isys_catg_application_list__isys_connection__id LEFT JOIN isys_obj AS j5 ON j5.isys_obj__id = j4.isys_connection__isys_obj__id LEFT JOIN isys_obj AS j6 ON j6.isys_obj__id = j3.isys_catg_application_list__isys_obj__id WHERE IFNULL(j6.isys_obj__status, 2) = 2 AND obj_main.isys_obj__status = 2 AND j1.isys_cats_lic_list__status = 2 AND obj_main.isys_obj__isys_obj_type__id = 33 GROUP BY j1.isys_cats_lic_list__id ORDER BY CASE WHEN COUNT(j3.isys_catg_application_list__id) = 0 THEN 4 WHEN COUNT(j3.isys_catg_application_list__id) = j1.isys_cats_lic_list__amount THEN 3 WHEN COUNT(j3.isys_catg_application_list__id) < j1.isys_cats_lic_list__amount THEN 2 WHEN COUNT(j3.isys_catg_application_list__id) > j1.isys_cats_lic_list__amount THEN 1 END ;
LG Volker Schardt
-
Hallo,
und wie kann ich in report zeigen welche lizenz auf welche client installiert?
Lieben Gruß, Yulia
-
Hallo Yulia,
hilft Dir dieser Report dafuer weiter?
SELECT
j1.isys_obj__id AS id,
j1.isys_obj__title AS "Hostname",
j2.isys_obj__title AS "Software",
isys_cats_lic_list__key AS "Lizenzschluessel"FROM isys_obj AS j1
LEFT JOIN isys_catg_application_list
ON j1.isys_obj__id = isys_catg_application_list__isys_obj__idLEFT JOIN isys_cats_app_variant_list
ON isys_cats_app_variant_list__id = isys_catg_application_list__isys_cats_app_variant_list__idLEFT JOIN isys_connection
ON isys_connection__id = isys_catg_application_list__isys_connection__idLEFT JOIN isys_obj AS j2
ON j2.isys_obj__id = isys_connection__isys_obj__idLEFT JOIN isys_cats_lic_list
ON isys_cats_lic_list__id = isys_catg_application_list__isys_cats_lic_list__idWHERE TRUE
AND j2.isys_obj__isys_obj_type__id = 2ORDER BY
j1.isys_obj__title, j2.isys_obj__titleGruss,
jkondek -
Hallo jkondek,
Vielen Dank!!!!! Genau das habe ich gesucht!!!!
Gruß, Yulia