avril
2009
Ayant pas mal patouillé dans la base de contenu récemment, je me suis dit que cela pourrait toujours servir a quelqu’un d’autre un jour ou l’autre. En conséquence de quoi, voila le premier article dans une liste de je ne sais pas pas encore combien, qui concernera la base de contenu de Sharepoint V3.
Avant de commencer, on va commencer par les précautions d’usage au niveau de la base de contenu:
- Ne jamais faire de mise a jour ou d’insertion directement dans la base de contenu. L’API est la pour ca, permets de tout faire, et est prévue pour.
- Ne pas mettre en production un programme faisant des requêtes fréquentes sur la base de contenu. Un lock sur la base de contenu peut avoir des effets désastreux
- Dans la mesure du possible, si c’est pour faire un test, ne pas travailler sur une base de production. Toujours faire les tests sur des backups.
…et évidemment, si vous détruisez par inadvertance votre base Sharepoint en faisant des manips, ne m’envoyez pas un mail rageur
J’insiste lourdement, une modification inconsidérée de la base de contenu peut détruire votre site Sharepoint…
On va commencer par trois tables qui vont parler a tous les développeurs Sharepoint, la table Sites, la table Webs, et la table des utilisateurs, Users.
Pour les non-Sharepointeurs, un peu de vocabulaire (un peu simplifié).
- La base de contenu est une base SQL Server qui va contenir les données du site Sharepoint (les items, les documents etc…)
- Une ferme est un ou plusieurs serveurs physique, sur lequel les pages applicatives et le « programme » Sharepoint vont être installés.
- Une Web Application est un site au sens IIS, qui est géré par l’applicatif Sharepoint
- Chaque Web Application va contenir une ou plusieurs collections de Sites (SPSite coté API, table Sites de la base de contenus)
- Une collection de site va contenir au moins un Web (SPWeb, table Web), qui sera le Web de niveau supérieur, et pourra contenir autant de sous-sites (chacun étant un SPWeb) que nécessaire, et chaque Web pouvant aussi contenir des Webs
- Une fois qu’on est au niveau Web, on trouvera des listes et des bibliothèques de documents
Voila pour la petite intro.
La table des Sites va contenir toutes les collections de site de l’application Sharepoint qui utilise la base de contenu courante.
On trouvera dans cette table, entre autre, les infos sur les quota, la taille occupée (pour le site et pour la corbeille) les différents Url (absolues), les propriétaires de la collection de site (primaires et secondaires), et les dates de certaines action (créations, dernière modification, etc…)
La table des Web va contenir tous les SPWeb contenu dans l’application web courante. On trouvera dans cette table le titre du Web, son Url relative, des statistiques (utilisation quotidienne, mensuelle), les informations de locale et de calendrier, l’Id unique du Web, et l’Id du Web parent si il existe.
On va pouvoir, en partant de ces tables, effectuer, par exemple, les requêtes suivantes:
FROM Webs
WHERE ParentWebId IS NULL
Cette requête va nous donner tous les sites Web de niveau supérieurs (1 par collection…)
Inversement, celle ci va nous donner tous les Webs appartenant a un Web de niveau supérieur:
FROM Webs
WHERE Not ParentWebId IS NULL
Cette requête va nous donner, pour tous les Sites, la taille occupée, la date de création, les propriétaires, et les tailles occupées par les données et par la corbeille.
UserInfo.tp_Login AS Principal, UserInfo_1.tp_Login AS Secondaire
FROM Sites INNER JOIN
UserInfo ON Sites.OwnerID = UserInfo.tp_ID INNER JOIN
UserInfo AS UserInfo_1 ON Sites.SecondaryContactID = UserInfo_1.tp_ID
Plus intéressant, la liste de tous les utilisateurs de tous les webs
FROM UserInfo INNER JOIN Webs
ON UserInfo.tp_SiteID = Webs.SiteId
Et le nombre d’utilisateurs par web
FROM UserInfo INNER JOIN
Webs ON UserInfo.tp_SiteID = Webs.SiteId
GROUP BY Webs.FullUrl, Webs.Title
…ainsi que le nombre d’utilisateurs actifs
FROM UserInfo INNER JOIN
Webs ON UserInfo.tp_SiteID = Webs.SiteId
WHERE UserInfo.tp_IsActive = 1
GROUP BY Webs.FullUrl, Webs.Title
voila, pour une première approche de la bête, si j’arrive a garder intacte ma belle motivation (et que ca intéresse quelqu’un…), j’essayerai de passer brièvement sur toutes les tables intéressantes (de mon point de vue)
Pour conclure, je ne saurais pas assez le répéter, pas d’insert, pas d’updates !!!
Articles récents
Archives
- janvier 2014
- septembre 2013
- août 2013
- mai 2013
- avril 2013
- janvier 2013
- août 2012
- juin 2012
- mai 2012
- avril 2012
- mars 2012
- novembre 2011
- septembre 2011
- août 2011
- juillet 2011
- juin 2011
- mai 2011
- avril 2011
- février 2011
- janvier 2011
- novembre 2010
- octobre 2010
- septembre 2010
- août 2010
- juillet 2010
- juin 2010
- mai 2010
- avril 2010
- mars 2010
- février 2010
- janvier 2010
- décembre 2009
- novembre 2009
- octobre 2009
- septembre 2009
- août 2009
- juillet 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009