Benutzer mit den meisten Antworten
Falsche Ergebnisse/Ausgabe bei Abfrage in Collection

Frage
-
Hallo,
unter SCCM2007R2Sp2 habe ich eine Abfrage gebastelt, die alle Clients raussuchen soll, die den Adobe Acrobat VOR der Version 9.3.2.136 installiert haben.
Da die Abfrage leider nicht die Version sauber abgleichen kann (meine 1.te Idee war, den Wert für die die Version ist kleiner als 9.3.2.136 zu setzen; wird jedoch als String angesehen), habe ich ein:
Filename ist acrobat.exe
FileVersion ungleich 9.3.2.136
FileModifiedDate kleiner 03.04.2010 22:32
Die 3 Daten sehe ich so auch im ResourceExplorer für eine Maschine, die den aktuellen Acrobat installiert hat.
Die Abfrage tut auch fleissig, jedoch sehe ich in der Liste auch teilweise Rechner, die die Version 9.3.2.136 haben.
Hier die Abfrage:
select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_SoftwareFile on SMS_G_System_SoftwareFile.ResourceID = SMS_R_System.ResourceId where (SMS_G_System_SoftwareFile.FileName = "Acrobat.exe" and SMS_G_System_SoftwareFile.FileVersion != "9.3.2.163" and SMS_G_System_SoftwareFile.FileModifiedDate < "03.04.2010 22:32")
Vermutlich liegts am Verständnis der Abfrage selbst - wo jedoch liegt der Fehler?
André
Antworten
-
select * from SMS_R_System where SMS_R_System.Name not in (select * from SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceId = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%Adobe Reader 9.3.2 MUI%")
Ohne das live probiert zu haben ... das "select * from" muss eindeutig sein, also wie in meinem Beispiel (will heissen: genau nachmachen, was dort steht ;-) ): "select distinct Name from SMS_R_System where Name not in (select distinct SMS_R_System.Name". In meinem Bsp wird in der Klammer ein "Name" zurückgegeben, entsprechend muss vor der Klammer auch auf diesen Namen abgefragt werden. Du musst also den * durch den Name ersetzen.- Als Antwort markiert Andrei TalmaciuModerator Montag, 5. Juli 2010 09:53
Alle Antworten
-
Hallo Torsten,
ich kann den Fehler nicht finden, auch sehe ich im Resourceexplorer nur eine Version; somit verstehe ich nicht, weshalb bei der Abfrage nun andere Ergebnisse rauskommen.
OK -> neue Abfrage, angelehnt an Deinen Artikel (So kann ich zwar nicht sagen, ob die Version kleiner oder größer ist, aber das kommt noch irgendwie....):
http://www.mssccmfaq.de/2009/12/14/subselect-not-in-abfragen/
---------------
select * from SMS_R_System where SMS_R_System.Name not in
(select * from SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on
SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceId = SMS_R_System.ResourceId
where
SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%Adobe Reader 9.3.2 MUI%")
---------------
Die Klammer-Abfrage selbst nach dem "not in" funktioniert, getestet über eine einzelene Query.
Anscheinend ist auch kein Fehler im vorhergehenden select * ... not in..., denn erst, wenn ich das letzte Fenster des Assistenten schließe - die Query Rule Propetries- in der ich die Collection auswähle, die abgefragt werden soll sowie die ResourceClass (System Resource), bekomme ich folgende Fehlermeldung:
The query statement that you entered is not valid. Please enter a valid statement
Was mich stört, ist im Assistenten-Fenster: Criterion Properties, in dem ich die SubselectValues sowie den not in Operator festlege, ein Ausrufezeichen neben meiner Subselect Abfrage sehe; diese habe ich unter den Queries angelegt und diese tut auch, wie oben schon geschrieben.
Setze ich hier mit Absicht einen Fehler ein, so lässt mich der Assistent dieses Fenster schon garnicht schließen.
Kannst Du mir sagen, wo hier der Fehler liegt?
André
- Bearbeitet André Heublein Montag, 7. Juni 2010 13:29 Tippfehler
-
select * from SMS_R_System where SMS_R_System.Name not in (select * from SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceId = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%Adobe Reader 9.3.2 MUI%")
Ohne das live probiert zu haben ... das "select * from" muss eindeutig sein, also wie in meinem Beispiel (will heissen: genau nachmachen, was dort steht ;-) ): "select distinct Name from SMS_R_System where Name not in (select distinct SMS_R_System.Name". In meinem Bsp wird in der Klammer ein "Name" zurückgegeben, entsprechend muss vor der Klammer auch auf diesen Namen abgefragt werden. Du musst also den * durch den Name ersetzen.- Als Antwort markiert Andrei TalmaciuModerator Montag, 5. Juli 2010 09:53
-
Hi Torsten,
die obige Abfrage kam aus dem Assistenten, hier habe ich eine korrekte Syntac erwartet... OK, die Abfrage funktioniert nun.
Andere Frage: Im Resourceexplorer sehe ich bei verschiedenen Clients Adobe Acrobat sowie Adobe Reader. Erstes SW-Produkt wurde jedoch schon vor längerer Zeit wieder deinstalliert, und danach ein neuer HW Scan erfolgreich durchgeführt.
In Hardware/Add/Remove Programs sehe ich also auch vergangene Daten? Wie kann ich dann das aktuelle (den Stand des letzten HW Scans) anzeigen bzw. auswerten?
André