-
Gesamte Inhalte
46 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von digga_mies
-
-
Hi Leute,
ich habe mir eine TSQL Abfrage zusammengeschustert, die leider Gottes nicht mehr aufhören will zu laufen. Sie läuft knapp 40min ohne Ergebnis und das ist leicht bescheuert.
Innerhalb soll gezählt werden wie viele Rechner das aktuelle Virenschutzupdate installiert haben und die Gesamtzahl der Rechner in dem Land stehen. Daraus kann man dann prozentuale Anteile errechnen usw, aber das gehört ja nicht zur Abfrage.
Kann mir jemand sagen, was ich in diesem Zusammenhang falsch mache? Weil wenn ich jeweils nur einen Teil der Abfrage laufen lasse (up2date clients oder alle clients) dann läuft die abfrage in wenigen sekunden. Hat jemand eine Idee. Eigentlich dürfte es nur ein Logikfehler sein.
Grüße digga_mies
Hier die Abfrage:
DECLARE @VARIABLE1 NUMERIC(9) SELECT @VARIABLE1 = MAX(DATVer) FROM EPOProductProperties SET @VARIABLE1 = @VARIABLE1 - 3; SELECT EPOBranchNode.NodeName ,COUNT(DISTINCT Rechner_aktuell.NodeName) AS Up2DateComputers ,COUNT(DISTINCT Rechner_total.NodeName) AS TotalComputers FROM [ePO4_BBMAGA3].[dbo].[EPOBranchNode] LEFT JOIN (SELECT [EPOLeafNode].[NodeName], [EPOBranchNode].[L1ParentID] FROM [EPOLeafNode] left join [EPOProductProperties] ON [EPOProductProperties].[ParentID] = [EPOLeafNode].[AutoID] left join [EPOBranchNode] ON [EPOBranchNode].[AutoID] = [EPOLeafNode].[ParentID] WHERE [EPOLeafNode].[ParentID] = EPOBranchNode.AutoID AND EPOProductProperties.ProductCode LIKE 'VIRUS%' AND EPOProductProperties.DATVer >= CAST(@VARIABLE1 AS nvarchar(4)) ) AS Rechner_aktuell ON Rechner_aktuell.L1ParentID = EPOBranchNode.L1ParentID LEFT JOIN (SELECT [EPOLeafNode].[NodeName], [EPOBranchNode].[L1ParentID] FROM [EPOLeafNode] left join [EPOProductProperties] ON [EPOProductProperties].[ParentID] = [EPOLeafNode].[AutoID] left join [EPOBranchNode] ON [EPOBranchNode].[AutoID] = [EPOLeafNode].[ParentID] WHERE [EPOLeafNode].[ParentID] = EPOBranchNode.AutoID ) AS Rechner_total ON Rechner_total.L1ParentID = EPOBranchNode.L1ParentID WHERE EPOBranchNode.NodeName IN ('AR01','AT01','AU01','BE01','BG01','BR00','CH00','CL01','CN00','CO01','CZ00_SK00','DE00','DK01','DO01','EC01','ES00','FI01','FR00','HR01','HU00','ID01','IE01','IN01','IT01','JP01','KH01','KR01','MX01','MY01','MY02','NL01','NO01','PE01','PH01','PK01','PL01','PT01','RO01','RU01','SE02','SG01','TH01','TR01','TW01','UK01','US00','VN01','ZA01') GROUP BY EPOBranchNode.NodeName
-
Hey,
vielen Dank für die Antworten. Hab jetzt mal einen solchen Job angelegt und werde mal sehen. ob das so funktioniert. Da ich insgesamt von so vielen Servern einsammeln muss, passt es so am Besten.
Grüße
digga_mies
-
Hallo Leute,
ich möchte auf einem MSSQL Server eine Tabelle erstellen, die sich täglich 1x alle Daten von ca 10 anderen Tabellen aus anderen Datenbanken von anderen Servern abholt. Die Tabellen sehen dabei auf allen Servern gleich aus.
Einen View zu erstellen, und die Daten immer von Linked Servern aktuell abzurufen, ist leider für das Reporting, für das ich die Tabelle nutzen möchte, nicht performant genug.
Das bedeutet, ich möchte eigentlich immer eine neue Version pro Tag haben, die sich die Daten von den anderen Servern abholt.
Wie kann ich einen solchen Schritt realisieren?
Grüße
digga_mies :bimei
-
Hi @all,
ich operiere grade an einer ODBC Datenquelle mit 3 voneinander abhängigen Tabellen. Das Problem ist, das ich die Felder nun gerne alle in ein Formular packen würde und aus der einen Datenbank vorgegebene Werte über ein Kombinationsfeld auswählen würde, wenn ich einen neuen Datensatz anlege, ohne das gleich eine neue ID vergeben wird, allerdings soll bei den anderen die ID eine neue werden.
Ich hoffe irgendwer versteht diese Erklärung. Ist irgendwie schwer mein Problem in Worte zu fassen
Grüße
Rob
-
Wenn es sich um einen MS SQL Server handelt, schau dir mal die SQL Server Reporting Services an.
Also ich habe schon viel Erfahrung mit den Reporting Services sammeln können, bin zufrieden damit und sie sind bei jeder SQL Lizenz dabei.
Grüße
Rob
-
Danke, für den Tip, aber bei diesen Tabellen weiß ich zu 100% das es keine doppelten Einträge geben kann...
Grüße
:bimei
-
Hey,
also das mit dem UNION SELECT funktioniert einwandfrei. Nein, ich wollte die Daten nicht addieren, sondern nacheinander in einer Spalte ausgeben lassen. Hat mir sehr geholfen.
Vielen Dank
digga_mies
:bimei
-
Hey,
um euch mal meine Erfahrungen mitzuteilen, dachte ich mir ich schreib euch auch mal was hier rein
Ich bin jetzt im 3.Lehrjahr in der Ausbildung zum Fachinformatiker für Systemintegration und finde bisher habe ich alles richtig gemacht. Habe mich nach dem Ende meiner Schulzeit dazu entschieden eine Ausbildung anzufangen, weil ich mir auch noch nicht sicher war, ob das Studium sofort etwas für mich ist.
Jetzt, so kurz vor Ende der Ausbildung hat mich aber doch nochmal der Lerneifer gepackt und ich werde zum Wintersemeseter anfangen zu studieren. Informatik, was auch sonst. Allerdings hat es einen Vorteil, schon eine Ausbildung gemacht zu haben, nämlich den, dass ich auch, wenn ich das Studium nicht schaffe, eine abgeschlossene Berufsausbildung habe und anfangen kann zu arbeiten. Ich kann jedem nur empfehlen diesen Weg zu gehen.
War nur mal so ein kleiner Erfahrungsbericht meinerseits, ich weiß nicht ob es bei einer Entscheidung helfen kann, aber es ist sicher gut, sich mal mehrere Meinungen anzuhören.
Grüße
digga_mies
-
Hi Leute,
also der Name sagt nicht so viel, aber ich versuch's zu erklären.
Ich habe 2 Views in 2 verschiedenen Datenbanken und möchte diese innerhalb einer Query untereinander ausgeben. Man kann sich das in etwa so vorstellen:
View A
ColumnA1 | ColumnA2 | ColumnA3
View B
ColumnB1 | ColumnB2 | ColumnB3
Und daraus soll dann werden:
Query-Ausgabe:
IndexAusAB | ColumnAB1 | Column AB2 | ColumnAB3
IndexAusAB := Datenbankname von View A oder View B
Ich hoffe ihr könnt nachvollziehen was ich meine und mir unter die Arme greifen.
Grüße
digga_mies
-
Hallo Leute,
hat sich schon mal jemand mit der WSUS DB auseinander gesetzt?
Ich versuche gerade den letzten Status aus der Datenbank zu bekommen und finde da leider nur das LastSync Result, welches mich aber nich weiter bringt, weil es einfach mal die falschen Informationen anzeigt im Gegensatz zur WSUS Console auf dem Server.
Hat sich schon mal jemand damit auseinander gesetzt? Wenn ja, bitte mal melden.
Grüße
Rob
-
Das stimmt wohl
-
Also ich glaube des ist das Selbe wie bei uns IHK München
"Angaben zur geplanten Projektdokumentation"
habe da meine Gliederg der Dokumentation reingeschrieben wie diese ca.
aussehen wird, also
Inhaltsangabe:
Deckblatt
1. Inhaltsverzeichnis
2. Einleitung
3. Projektplanung
- Istanalyse
- Sollkonzept
4. Projektausführung
5. Projektabschluss
Anlagen:
etc etc
also so in der Art hatte ich es und wurde angenommen ^^
Hey,
dankeschön. Das hilft mir schon mal weiter.
Und wenn es so angenommen wurden ist, dann kann es ja auch nich falsch sein
bei mir wäre es die IHK Kassel, falls jemand aus der Nähe eine Ahnung hat, dann bitte melden, ansonsten mach ich morgen in der Schule mal ne Anfrage
Grüße
Rob
-
Hallo,
ich möchte mich nochmal recht herzlich bedanken.
Es funktioniert jetzt alles, allerdings habe ich das Ganze doch ein bisschen anders gelöst.
Der Code ist hier:
DECLARE @VARIABLE1 NUMERIC(9) SELECT @VARIABLE1 = MAX(DATVer) FROM EPOProductProperties SET @VARIABLE1 = @VARIABLE1 - 3; SELECT SUBSTRING(EPOBranchNode.NodeName,1,2) ,COUNT(DISTINCT Rechner_aktuell.ComputerName) AS Clients_wt_cur_DAT ,COUNT(DISTINCT Rechner_total.ComputerName) AS All_Clients FROM EPOBranchNode LEFT JOIN ( SELECT EPOLeafNode.ParentID, EPOLeafNode.NodeName AS ComputerName FROM EPOLeafNode INNER JOIN EPOProductProperties ON EPOProductProperties.ParentID = EPOLeafNode.AutoID WHERE EPOProductProperties.ProductCode LIKE 'VIRUS%' AND EPOProductProperties.DATVer >= CAST(@VARIABLE1 AS nvarchar(4)) ) AS Rechner_aktuell ON EPOBranchNode.AutoID = Rechner_aktuell.ParentID LEFT JOIN ( SELECT EPOLeafNode.ParentID, EPOLeafNode.NodeName AS ComputerName FROM EPOLeafNode INNER JOIN EPOProductProperties ON EPOProductProperties.ParentID = EPOLeafNode.AutoID WHERE EPOProductProperties.ProductCode LIKE 'VIRUS%' ) AS Rechner_total ON EPOBranchNode.AutoID = Rechner_total.ParentID WHERE EPOBranchNode.NodeName IN ('AR01','AT01','AU01','BE01','BR01','BR02','BR03','BR04','BR05','BR06','BR07','BR-EXCEPTIONS','BROK','BR-SRV','BR-SRV-WEBSENSE','BG01','CL01','CN00','CN01','CN02','CN03','CN04','CN05','CN06','CN07','CN08','CN09''CO01','HR01','CZ','CZ_NOTEBOOKS','CZ_SERVERS','CZ00_SK00','DK01','DO01','EC01','FI01','FR_AD','FR00','FR01','FR02','FR03','FR04','FR07','FR09','FR16','DE00','DE01','DE03', 'DE05','DE06','DE08','DE08_Server','DE11','DE12','DE13','DE17','DE20','DE21','DEX1','DEX2','DEXX','HU00','IN01','ID01','IE01','IT01','JP01','KR01','MY01','MY02','MX01','NL01','NO01','PK01','PE01','PH01','PL01','PT01','RO01','RU01','SG01','ZA01','ES00','SE02','CH01','CH03','CH05','CH07','TW01','TH01','TR01','UK01','US00','VN01','VN02','VN03') GROUP BY SUBSTRING(EPOBranchNode.NodeName,1,2)
Grüße
Rob
-
Hallo Leute,
ich hab mal eine allgemeine Frage zum Projektantrag.
Was schreibt man denn bitte bei "Dokumentation zur Projektarbeit" rein??
Ich meine, die Arbeitsschritte und so weiter sind ja klar, aber was soll ich denn da reinschreiben? Welche Dateien zu meiner Dokumentation gehören, oder was??
Grüße
Rob
-
Hey Leute,
mir ist da noch etwas eingefallen.
Es ist ja Schwachsinn nur auf die neueste Version zu überprüfen. Ich würde nun gerne von dem MAX(DATVer) 3 abziehen. Dann hätte ich die 4 letzten Versionen.
Wenn ich aber versuche VARIABLE1 als numerischen Wert zu initialisieren, gibt er mir immer den Fehler aus, das er NVARCHAR nicht in NUMERIC konvertieren kann. Gleicher Fehler bei CAST und CONVERT.
Die Version wird im Format '1234.0000' angegeben. Da ja schon ein Punkt vorhanden ist, sollte sich das ganze doch ohne Problem als numerischer Wert behandeln lassen, oder?
Ich hoffe ihr könnt mir hiermit nochmal helfen.
Grüße
Rob
-
Also ich hab null Plan von Reporting - soviel vorweg.
Aber eigentlich sollte diene Query so abgeändert das zeigen was du willst:
aus
mach mal
SELECT substr(EPOBranchNode.NodeName,1,2)
GROUP BY substr(EPOBranchNode.NodeName,1,2)
Ich danke euch allen hier
Jetzt funktioniert es genau so, wie ich es mir vorgestellt habe
Grüße
Rob
-
Und wie sollte ich das deiner Meinung nach in meine Query einbinden? Vor allem Dingen soll das ja nicht nur für BR gemacht werden, sondern für alle anderen ja auch.
Wie wäre das da am einfachsten??
Grüße
Rob
-
Also vielen Dank an deine allgemein gehaltene Zusammenfassung meines Problems streffin Es funktioniert jetzt
So sieht mein Code jetzt aus, die Prozentberechnung mache ich dann direkt im Report, das geht dort einfacher
DECLARE @VARIABLE1 VARCHAR(9) SELECT @VARIABLE1 = MAX(DATVer) FROM EPOProductProperties SELECT EPOBranchNode.NodeName ,COUNT(DISTINCT Rechner_aktuell.ComputerName) AS Clients_wt_cur_DAT ,COUNT(DISTINCT Rechner_total.ComputerName) AS All_Clients FROM EPOBranchNode LEFT JOIN ( SELECT EPOLeafNode.ParentID, EPOLeafNode.NodeName AS ComputerName FROM EPOLeafNode INNER JOIN EPOProductProperties ON EPOProductProperties.ParentID = EPOLeafNode.AutoID WHERE EPOProductProperties.ProductCode LIKE 'VIRUS%' AND EPOProductProperties.DATVer = @VARIABLE1 ) AS Rechner_aktuell ON EPOBranchNode.AutoID = Rechner_aktuell.ParentID LEFT JOIN ( SELECT EPOLeafNode.ParentID, EPOLeafNode.NodeName AS ComputerName FROM EPOLeafNode INNER JOIN EPOProductProperties ON EPOProductProperties.ParentID = EPOLeafNode.AutoID WHERE EPOProductProperties.ProductCode LIKE 'VIRUS%' ) AS Rechner_total ON EPOBranchNode.AutoID = Rechner_total.ParentID WHERE EPOBranchNode.NodeName IN ('AR01','AT01','AU01','BE01','BR01','BG01','CA01','CL01','CN00','CO01','HR01','CZ00','DK01','DO01','EC01','FI01','FR00','DE00','HU00','IN01','ID01','IE01','IT01','JP01','KR01','MY01','MY02','MX01','NL01','NO01','PK01','PE01','PH01','PL01','PT01','RO01','RU01','SG01','ZA01','ES00','SE02','CH01','TW01','TH01','TR01','UK01','US00','VN01') GROUP BY EPOBranchNode.NodeName
Nun habe ich aber noch eine Frage!
Ich habe ja diese ganzen Sites angegeben in dem WHERE Statement. Kann man diese auch gruppieren? Ich habe nämlich gemerkt, das wir nicht nur eine Site von z.B.: BR haben, sondern 7, also BR01, BR02, BR03, ... , BR07. Also muss ich natürlich alle abfragen, wie es aussieht mit den aktuellen Rechnern und allen Rechnern und diese dann für BR zusammenfassen. Wenn jemand mir dazu noch einen Tip geben könnte, dann wäre ich euch sehr dankbar.
In Kurzform: Aus BR01, [...] , BR07 mache BRges!
Grüße
Rob
-
Also das mit dem EPO Reporting stimmt, es gibt da ein Web Frontend mit den man sich einige lustige Abfragen zusammenstellen kann und sich auch so einiges auswerten lassen kann. Das Radar was ich hier erstellen möchte, gibt es aber nicht in dem integrierten System. Ich benutze hier ausschleßlich den SQL Server 2008 Reporting Service falls dir das etwas sagt. Damit kann man die Reports in einer Visual Studio Umgebung designen, programmieren und anderen tollen Firlefanz mit anstellen. Die Reports werden dann auf einen eigenen Server exportiert und dort kann man sie dann wohlsortiert in einer virtuellen Architektur von Ordnern anzeigen lassen.
Mein Kollege hat auch die Queries, die man mit dem EPO Frontend machen kann, genutzt um sich so ein Radar im Excel zusammenzuflicken, ABER es ist unschön so ein Excel in eine Internetseite einzubinden bzw. es jeden Tag händisch aktualisieren zu müssen. Somit wollen wir dieses Radar mit Hilfe des Reporting Services automatisieren und portierbarer machen. Denn mit dem Reporting Service hat man nicht nur die Möglichkeit die Reports bereitzustellen sondern auch das ganze mit den aktuellen Daten exportieren zu können und das ebenfalls automatisiert.
Jetzt kennst du die Beweggründe dieser Arbeit
btw: Danke für die Info von Edith
-
Hey,
also es sind insgesamt 3 Tabellen auf die ich zugreife.
EPOLeafNode [Die Tabelle mit den Computern]
- NodeName := Computer Name, die dann der Site zuzuordnen sind
EPOBranchNode [Die Tabelle mit den Sites]
- NodeName := Site Name, wo die Computer dann eingeordnet werden müssen
EPOProductProperties [Die installierten McAffee Applikationen mit Eigenschaften]
- DATVer := Ist die Version der Virendefinitionen, die der Virenschutz verwendet
Untereinander sind diese Tabellen mit Feldern verbunden, die sich AutoID und ParentID nennen, diese sind aber nicht einfach zu joinen und je nachdem wie man das macht, bekommt man immer ein anderes Ergebnis. Ich habe sie in meinem Code so gejoint, das immer die übergeordnete, die AutoID zu der ParentID der untergeordneten Tabelle bekommen hat. Demnach wäre meine Ordnung jetzt:
EPOBranchNode > EPOLeafNode > EPOProductProperties
Damit man die Virenschutzdefinitionsversion (Krasses Wort! ) auch vom richtigen Programm bekommt, habe ich dann auf 'VIRUS%' gefiltert, was dann mein WHERE Statement erklärt.
Ich hoffe das reicht insofern.
Grüße
Rob
-
Hello again,
Also ich habe mal einen Versuch gestartet...
Das mit dem IN Statement klappt wunderbar und erspart vor allem Platz in dem kleinen SSRS Query Editor Fenster
Was allerdings nicht funktioniert ist meine Subquery Leider bekomme ich dann die Summe aller angegeben Sites in jeder Zeile, was hier allerdings nichts nutzt, denn ich möchte ja die Gesamtzahl aller Rechner pro Site und dann den prozentualen Anteil der Site mit den aktuellen Virendefinitionen ausgeben.
Gibt es eine Möglichkeit der Subquery ein Feld der aktuellen Zeile zu übergeben? Also in meinem Falle dann den Namen der Site, damit er eben immer nur die der Site zählt und als 3. Feld niederschreibt?
So sieht meine Query jetzt nach der Bearbeitung aus, funktioniert aber nur so wie eben beschrieben:
DECLARE @VARIABLE1 VARCHAR(9) SELECT @VARIABLE1 = MAX(DATVer) FROM EPOProductProperties SELECT EPOBranchNode.NodeName, COUNT(EPOProductProperties.DATVer) AS Part, (SELECT COUNT(EPOProductProperties.DATVer) FROM EPOLeafNode INNER JOIN EPOBranchNode ON EPOLeafNode.ParentID = EPOBranchNode.AutoID INNER JOIN EPOProductProperties ON EPOLeafNode.AutoID = EPOProductProperties.ParentID WHERE (EPOProductProperties.ProductCode LIKE 'VIRUS%') AND EPOBranchNode.NodeName IN ('AR01','AT01','AU01','BE01','BR00','BG01','CA01','CL01','CN00','CO01','HR01','CZ00','DK01','DO01','EC01','FI01','FR00','DE00','HU00','IN01','ID01','IE01','IT01','JP01','KR01','MY01','MY02','MX01','NL01','NO01','PK01','PE01','PH01','PL01','PT01','RO01','RU01','SG01','ZA01','ES00','SE02','CH00','TW01','TH01','TR01','UK01','US00','VN01') ) AS Total FROM EPOLeafNode INNER JOIN EPOBranchNode ON EPOLeafNode.ParentID = EPOBranchNode.AutoID INNER JOIN EPOProductProperties ON EPOLeafNode.AutoID = EPOProductProperties.ParentID WHERE (EPOProductProperties.ProductCode LIKE 'VIRUS%') AND EPOBranchNode.NodeName IN ('AR01','AT01','AU01','BE01','BR00','BG01','CA01','CL01','CN00','CO01','HR01','CZ00','DK01','DO01','EC01','FI01','FR00','DE00','HU00','IN01','ID01','IE01','IT01','JP01','KR01','MY01','MY02','MX01','NL01','NO01','PK01','PE01','PH01','PL01','PT01','RO01','RU01','SG01','ZA01','ES00','SE02','CH00','TW01','TH01','TR01','UK01','US00','VN01') GROUP BY EPOBranchNode.NodeName, EPOProductProperties.DATVer HAVING EPOProductProperties.DATVer = @VARIABLE1 ORDER BY EPOBranchNode.NodeName
P.S.: Sorry für den Doppelpost, entweder ich bin zu doof den Edit Button zu finden, oder es gibt keinen
MfG
digga_mies
-
Ahja, stimmt ja, sowas gab es da ja auch
Ich danke dir, werd es mal probieren...
-
Bin jetzt soweit, das ich den Anteil rausbekomme...Jetzt fehlt nur noch die totale Anzahl der Clients, damit ich sie als Prozentzahl ausgeben kann...
Das hier wäre jetzt mein Code:
DECLARE @VARIABLE1 VARCHAR(9) SELECT @VARIABLE1 = MAX(DATVer) FROM EPOProductProperties SELECT EPOBranchNode.NodeName, EPOProductProperties.DATVer, COUNT(EPOProductProperties.DATVer) AS Part FROM EPOLeafNode INNER JOIN EPOBranchNode ON EPOLeafNode.ParentID = EPOBranchNode.AutoID INNER JOIN EPOProductProperties ON EPOLeafNode.AutoID = EPOProductProperties.ParentID WHERE (EPOProductProperties.ProductCode LIKE 'VIRUS%') AND EPOBranchNode.NodeName = 'AR01' OR EPOBranchNode.NodeName = 'AT01' OR EPOBranchNode.NodeName = 'AU01' OR EPOBranchNode.NodeName = 'BE01' OR EPOBranchNode.NodeName = 'BR00' OR EPOBranchNode.NodeName = 'BG01' OR EPOBranchNode.NodeName = 'CA01' OR EPOBranchNode.NodeName = 'CL01' OR EPOBranchNode.NodeName = 'CN00' OR EPOBranchNode.NodeName = 'CO01' OR EPOBranchNode.NodeName = 'HR01' OR EPOBranchNode.NodeName = 'CZ00' OR EPOBranchNode.NodeName = 'DK01' OR EPOBranchNode.NodeName = 'DO01' OR EPOBranchNode.NodeName = 'EC01' OR EPOBranchNode.NodeName = 'FI01' OR EPOBranchNode.NodeName = 'FR00' OR EPOBranchNode.NodeName = 'DE00' OR EPOBranchNode.NodeName = 'HU00' OR EPOBranchNode.NodeName = 'IN01' OR EPOBranchNode.NodeName = 'ID01' OR EPOBranchNode.NodeName = 'IE01' OR EPOBranchNode.NodeName = 'IT01' OR EPOBranchNode.NodeName = 'JP01' OR EPOBranchNode.NodeName = 'KR01' OR EPOBranchNode.NodeName = 'MY01' OR EPOBranchNode.NodeName = 'MY02' OR EPOBranchNode.NodeName = 'MX01' OR EPOBranchNode.NodeName = 'NL01' OR EPOBranchNode.NodeName = 'NO01' OR EPOBranchNode.NodeName = 'PK01' OR EPOBranchNode.NodeName = 'PE01' OR EPOBranchNode.NodeName = 'PH01' OR EPOBranchNode.NodeName = 'PL01' OR EPOBranchNode.NodeName = 'PT01' OR EPOBranchNode.NodeName = 'RO01' OR EPOBranchNode.NodeName = 'RU01' OR EPOBranchNode.NodeName = 'SG01' OR EPOBranchNode.NodeName = 'ZA01' OR EPOBranchNode.NodeName = 'ES00' OR EPOBranchNode.NodeName = 'SE02' OR EPOBranchNode.NodeName = 'CH00' OR EPOBranchNode.NodeName = 'TW01' OR EPOBranchNode.NodeName = 'TH01' OR EPOBranchNode.NodeName = 'TR01' OR EPOBranchNode.NodeName = 'UK01' OR EPOBranchNode.NodeName = 'US00' OR EPOBranchNode.NodeName = 'VN01' GROUP BY EPOBranchNode.NodeName, EPOProductProperties.DATVer HAVING EPOProductProperties.DATVer = @VARIABLE1 ORDER BY EPOBranchNode.NodeName
-
Holla,
Ich bin langsam am verzweifeln mit diesen doofen SQL Abfragen
Aber man muss ja tun, was man tun muss. Also im Endeffekt geht es hierbei um McAffee EPO Abfragen, man muss sich aber nicht damit auskennen um mir hier zu helfen denke ich.
Probelm ist Folgendes: Ich möchte einen Report erstellen, der mir mit einem Netz- oder auch Radardiagramm eine Übersicht über die verteilten Virendefinitionen pro AD Site gibt.
Das ganze soll aber Prozentual angezeigt werden, also wie viel Prozent der Clients pro Site haben einen Virendefinitionsstand der letzten 4 Versionen.
Leider bekomme ich es momentan nicht hin, die Clients einer Site zu zählen. So das ich im Ergebnis immer die Site, dann die totale Anzahl und dann die Anzahl der Clients mit aktuellem Virendefinitionen bekomme. Ich weiß, das ich das voraussichtlich irgendwie mit Subselects machen muss. Aber irgendwie bekomme ich das ganze nicht hin. Hat jemand eine Idee?
EPOBranchNode.NodeName ist hier der Name der Site,
EPOProductProperties.DATVer ist die Version der Virendefinitionen.
SELECT EPOLeafNode.NodeName AS ComputerName, EPOBranchNode.NodeName, EPOProductProperties.DATVer, (SELECT MAX(DATVer) FROM EPOProductProperties WHERE (ProductCode = 'VIRUSCAN8700') GROUP BY ProductCode) AS MaxDat FROM EPOLeafNode INNER JOIN EPOBranchNode ON EPOLeafNode.ParentID = EPOBranchNode.AutoID INNER JOIN EPOProductProperties ON EPOLeafNode.AutoID = EPOProductProperties.ParentID WHERE (EPOProductProperties.ProductCode LIKE 'VIRUS%') AND EPOBranchNode.NodeName = 'AR01' OR EPOBranchNode.NodeName = 'AT01' OR EPOBranchNode.NodeName = 'AU01' OR EPOBranchNode.NodeName = 'BE01' OR EPOBranchNode.NodeName = 'BR00' OR EPOBranchNode.NodeName = 'BG01' OR EPOBranchNode.NodeName = 'CA01' OR EPOBranchNode.NodeName = 'CL01' OR EPOBranchNode.NodeName = 'CN00' OR EPOBranchNode.NodeName = 'CO01' OR EPOBranchNode.NodeName = 'HR01' OR EPOBranchNode.NodeName = 'CZ00' OR EPOBranchNode.NodeName = 'DK01' OR EPOBranchNode.NodeName = 'DO01' OR EPOBranchNode.NodeName = 'EC01' OR EPOBranchNode.NodeName = 'FI01' OR EPOBranchNode.NodeName = 'FR00' OR EPOBranchNode.NodeName = 'DE00' OR EPOBranchNode.NodeName = 'HU00' OR EPOBranchNode.NodeName = 'IN01' OR EPOBranchNode.NodeName = 'ID01' OR EPOBranchNode.NodeName = 'IE01' OR EPOBranchNode.NodeName = 'IT01' OR EPOBranchNode.NodeName = 'JP01' OR EPOBranchNode.NodeName = 'KR01' OR EPOBranchNode.NodeName = 'MY01' OR EPOBranchNode.NodeName = 'MY02' OR EPOBranchNode.NodeName = 'MX01' OR EPOBranchNode.NodeName = 'NL01' OR EPOBranchNode.NodeName = 'NO01' OR EPOBranchNode.NodeName = 'PK01' OR EPOBranchNode.NodeName = 'PE01' OR EPOBranchNode.NodeName = 'PH01' OR EPOBranchNode.NodeName = 'PL01' OR EPOBranchNode.NodeName = 'PT01' OR EPOBranchNode.NodeName = 'RO01' OR EPOBranchNode.NodeName = 'RU01' OR EPOBranchNode.NodeName = 'SG01' OR EPOBranchNode.NodeName = 'ZA01' OR EPOBranchNode.NodeName = 'ES00' OR EPOBranchNode.NodeName = 'SE02' OR EPOBranchNode.NodeName = 'CH00' OR EPOBranchNode.NodeName = 'TW01' OR EPOBranchNode.NodeName = 'TH01' OR EPOBranchNode.NodeName = 'TR01' OR EPOBranchNode.NodeName = 'UK01' OR EPOBranchNode.NodeName = 'US00' OR EPOBranchNode.NodeName = 'VN01' GROUP BY EPOBranchNode.NodeName, EPOLeafNode.NodeName, EPOProductProperties.DATVer ORDER BY NodeName, ComputerName
Ich hoffe jemand von euch hat eine Idee. Ich muss leider so eklig über die Sites filtern, schön ist das nicht, aber so geht es am Besten.
Grüße,
digga_mies :bimei
Problem mit einer TSQL Abfrage
in Datenbanken
Geschrieben
Vielen Dank :uli
Allerdings muss ich zu deinem Nachtrag sagen, das da etwas nich so ganz passt. Da fehlen mir einige Nodes und die Zahlen stimmen einfach nicht mehr überein. Mit deiner ersten Erklärung und der Gruppierung der ParentID in den Subquerys hat es wunderbar geklappt und geht ruckzuck.
Beim Nachtrag müsste man ja auch theoretisch die Namen schon mal vertauschen, weil die Up2DateComputers ja die Rechner sind, deren DATVer >= @Variable1 sind. Und wenn man dann die TotalRechner zählen will, muss man ebenfalls ein CASE WHEN definieren, oder nicht?
Deine Erklärung war aber echt super :uli