McGizmo
Enthusiast
Hallo,
ich hätte da mal eine Frage. Kenne mich mit SQL allgemein und MS Sql im Speziellen nur mittelmäßig gut aus, vll. hat einer eine Idee.
Also, Situation:
Zugriffsrechte auf (Netzwerk)Ordner werden in einer Datenbank gespeichert. Eine Tabelle ordnet dabei den Berechtigten (egal ob Gruppe oder Benutzer) einem Verzeichnis zu
und hält die Rechte. Das sieht dann in etwa so aus (SDDL-String sind die Rechte).
So, die Fragestellung ist jetzt die Folgende - alle Ordner (bzw mit Einschränkung z.B. à la [WHERE pfad like 'C:%]) anzeigen, auf die die Gruppe Administratoren
keine Rechte hat.
So, meine bisherige Idee war jetzt diese. Ich mache eine Abfrage die mir alle Ordner gibt, die die WHERE pfad LIKe Bedingung erfüllen. Die empfange ich in der Anwendung
und führe für jeden String dann folgenden Befehl aus:
So, das klappt zwar theoretisch - dauert aber ewig, weil es sich ggf. um viele, viele (wir sprechen von hunderdtausenden und mehr) Ordner gibt, die das WHERE PFAD like
Statement erfüllen. Die müssen erst auf den Rechner geschaufelt weden und dannwird für jeden String ein neuer SQL Befehl abgesetzt...
Hat mir jemand ne Idee, was man machen kann? Vll. irgendwas um das direkt auf der Datenbank, ohne den "Programmzwischenschritt" machen zu können?
*E* Moment ich glaub ich hab's
ich hätte da mal eine Frage. Kenne mich mit SQL allgemein und MS Sql im Speziellen nur mittelmäßig gut aus, vll. hat einer eine Idee.
Also, Situation:
Zugriffsrechte auf (Netzwerk)Ordner werden in einer Datenbank gespeichert. Eine Tabelle ordnet dabei den Berechtigten (egal ob Gruppe oder Benutzer) einem Verzeichnis zu
und hält die Rechte. Das sieht dann in etwa so aus (SDDL-String sind die Rechte).
Code:
Berechtigter | Pfad | SDDL-String
----------------------------------------------
System | C:\temp | ----bla----
Administratoren | C:\temp | ----bla----
Benutzer | C:\temp | ----bla----
System | D:\temp | ----bla----
Benutzer | D:\temp | ----bla----
So, die Fragestellung ist jetzt die Folgende - alle Ordner (bzw mit Einschränkung z.B. à la [WHERE pfad like 'C:%]) anzeigen, auf die die Gruppe Administratoren
keine Rechte hat.
So, meine bisherige Idee war jetzt diese. Ich mache eine Abfrage die mir alle Ordner gibt, die die WHERE pfad LIKe Bedingung erfüllen. Die empfange ich in der Anwendung
und führe für jeden String dann folgenden Befehl aus:
Code:
SELECT pfad
FROM dbo.[rg-vz]
WHERE (pfad = 'PFAD_string') AND ('Administratoren' NOT IN
(SELECT name
FROM dbo.[rg-vz] AS [rg-vz_1]
WHERE (pfad = 'PFAD_string')
GROUP BY name))
So, das klappt zwar theoretisch - dauert aber ewig, weil es sich ggf. um viele, viele (wir sprechen von hunderdtausenden und mehr) Ordner gibt, die das WHERE PFAD like
Statement erfüllen. Die müssen erst auf den Rechner geschaufelt weden und dannwird für jeden String ein neuer SQL Befehl abgesetzt...
Hat mir jemand ne Idee, was man machen kann? Vll. irgendwas um das direkt auf der Datenbank, ohne den "Programmzwischenschritt" machen zu können?
*E* Moment ich glaub ich hab's
Zuletzt bearbeitet: