Sharepoint:SQL finden Sie alle Dokumente, die erstellt/bearbeitet, die von einem Benutzer

StackOverflow https://stackoverflow.com/questions/281373

  •  07-07-2019
  •  | 
  •  

Frage

Ich bin auf der Suche nach einer Abfrage, die auf Sharepoint 2003 um mir zu zeigen, alle Dokumente, die erstellt/bearbeitet, die von einem bestimmten Benutzer-id.

Ich habe festgestellt Tabellen mit den Dokumenten (Google Docs) und Tabellen für Benutzer (UserInfo, UserData) aber die Beziehung zwischen der scheint ein wenig seltsam - es gibt 99,000 Aufzeichnungen unserer userdata Tabelle, und 12.000 records in userinfo - wir haben die 400-Benutzer!

Ich nehme an, ich hatte erwartet, einen einfachen 1 zu viele Beziehung mit der Tabelle user mit 400 Datensätze und fügen Sie, dass die Dokumente Tisch, aber ich sehe, das ist nicht der Fall.

Jede Hilfe würde geschätzt werden.

Edit:Danke Björn, Habe ich übersetzt, die Abfrage wieder auf der Sharepoint 2003-Struktur:

select 
d.* from 
userinfo u join userdata d 
on u.tp_siteid = d.tp_siteid  
and 
u.tp_id = d.tp_author 
where
u.tp_login = 'userid' 
and
d.tp_iscurrent = 1

Dieser bekommt von mir eine Liste von siteid/listid/tp_id ich muss sehen, ob ich kann nachvollziehen jene zurück, um ein mit dem Namen / Pfad.Alle:jede zusätzliche Hilfe ist immer noch beliebt!

War es hilfreich?

Lösung

Ich habe nie sah Sie die Datenbank in SharePoint 2003, aber im Jahr 2007 UserInfo verbunden ist, - Websites, was bedeutet, dass jeder Benutzer eine Zeile in UserInfo für jede Websitesammlung (oder das äquivalent 2003-Konzept).So, zu identifizieren, was ein Benutzer tut, müssen Sie sowohl die site-id und die Benutzer-id innerhalb dieser Website.Im Jahr 2007, würde ich anfangen, mit so etwas wie dies:

select d.* from userinfo u 
join alluserdata d on u.tp_siteid = d.tp_siteid 
and u.tp_id = d.tp_author 
where u.tp_login = '[username]'
and d.tp_iscurrentversion = 1

Update:Wie andere hier schreiben, es wird nicht empfohlen, gehen Sie direkt in die SharePoint-Datenbank ist, aber ich würde sagen, benutzen Sie Ihren Kopf und seien Sie vorsichtig.Updates sind ein all-caps-no-no, aber wählt, hängt vom Kontext ab.

Andere Tipps

NICHT ABFRAGE DER SHAREPOINT-DATENBANK DIREKT!

Ich Frage mich, ob ich habe das klar genug?:)

Sie wirklich brauchen, um sich auf das Objektmodell in C# verfügbar, die Sie brauchen, um eine SPSite-Instanz für eine SiteCollection, und dann iterieren Sie über das SPList-Instanzen gehören das SPSite-und SPWeb-Objekte.

Sobald Sie das SPList-Objekt, müssen Sie die call-GetListItems mithilfe einer Abfrage-Filter für den Benutzer, den Sie möchten.

Das ist der unterstützte Weg, das zu tun, was Sie wollen.

Sie sollten niemals gehen direkt auf die Datenbank als SharePoint ist nicht entworfen, für, dass, und es gibt keine Garantie (tatsächlich, es ist eine spezielle Warnung), die die Struktur der Datenbank werden die gleichen zwischen den Versionen und upgrades, und zusätzlich, wenn der Inhalt erstreckt sich über mehrere Inhaltsdatenbanken in einer farm gibt es keine Garantie, dass eine Abfrage, die läuft auf eine Inhaltsdatenbank zu tun, was Sie erwarten auf der content-Datenbank.

Wenn Sie Blick auf das Objekt-Modell für die iteration, auch beachten Sie, dass müssen Sie die dispose () - SPSite-und SPWeb-Objekte, die Sie erstellen.

Oh, und ja, Sie können haben 400-Benutzer, aber ich würde Wetten, dass Sie haben 30 Seiten.Die Informationen wiederholt, die in der Datenbank pro Seite...30 x 400 = 12.000 Einträgen in der Datenbank.

Wenn Sie sind gehen zu verwenden, die Abfrage in Sharepoint sollten Sie wissen, dass das erstellen von sichten auf den Inhalt der Datenbank oder quering direkt gegen die Datenbank scheint ein großes No-No.Ein workaround könnte sein, einige benutzerdefinierte code, durchläuft das Objekt-Modell und schreibt die Ergebnisse in einer eigenen Datenbank.Dies kann entweder timer-basiert oder auf Basis eines eventtrigger.

Sie sollte das wirklich nicht tun, Wählt mit Sperren, D. H. entwederhinzufügen MIT (NOLOCK) auf Ihre Fragen.Einige Teile des Systems sind sehr timeout empfindlich und wenn Sie beginnen, die Einführung von sperren, die das system nicht erwartet, dass Sie sehen können das system freak out.

Aber wirklich, Sie sollten dies über das Objekt-Modell.Durcheinander herum mit etwas, das wie IronPython und Experimente, die mit der OM sind fast geradezu angenehm.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top