Microsoft Office SharePoint Server 2007 permet de charger les profils Utilisateurs disponible dans différentes sources telles que l’Active Directory. Un article traîtant de sa mise en place est disponible ici :
Problématique
Depuis la mise en place du Service Pack 3 de MOSS 2007 , et l’Upgrade du moteur SQL Server de la version 2005 à la version 2008 R2 sur ma ferme, en suivant les documentation disponible :
- SharePoint 2007 : Installation du Service Pack 3 de MOSS
- Upgrade de SQL Server 2005 vers SQL Server 2008 R2
L’import des profils utilisateurs ne se fait plus.
En effet, dès que l’on va dans l’interface d’administration des profils, on trouve l’écran suivant :
Le message en rouge est le suivant :
An error has occurred while accessing the SQL Server database or the Office SharePoint Server Search service. If this is the first time you have seen this message, try again later. If this problem persists, contact your administrator.
Il est bien évident que la connexion avec le moteur SQL fonctionne parfaitement (sinon, on ne trouverait pas ce message, puisque la ferme serait simplement Down).
N’ayant pas le courage de me battre avec le Support de Microsoft (en rapport avec mes précédentes expériences douloureuses), j’ai recherché une alternative telle que je l’ai fait précédemment pour un autre cas expliqué ci-dessous :
Work Around utilisé
La question est donc toute simple, comme on le voit dans la capture d’écran le chargement se fait bien si on le fait via Code, mais il est impossible d’utiliser l’outil interne pour gérer la planification. Il nous suffit donc de créer un script PowerShell permettant de faire ce lancement avec une gestion du Full et de l’incrémental.
Rien de plus simple pour cela, en partant d’un des scripts développé et disponible sur CodePlex :
Il suffit de créer un script qui détecte le jour actuel, afin de faire le Full import le dimanche et l’incrémental les autres jours. Puis lance le processus de chargement.
Le script peut être celui-ci :
function Refresh-User-Profiles([string]$SiteURL)
{
$CurrentDate = [datetime]::Now
[bool]$IncrementalCrawl = $True
if($CurrentDate.DayOfWeek -eq [system.DayOfWeek]::Sunday)
{
$IncrementalCrawl = $False
}
write-host "Current Date:", $CurrentDate.ToString(), "- WeekDay:", $CurrentDate.DayOfWeek, " Incremental Crawl:", $IncrementalCrawl[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server") > $null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.UserProfiles") > $null$site = new-object Microsoft.SharePoint.SPSite($SiteURL)
$srvContext = [Microsoft.Office.Server.ServerContext]::GetContext($site)
Write-Host "Status", $srvContext.Status
$UserConfProfManager = new-object Microsoft.Office.Server.UserProfiles.UserProfileConfigManager($srvContext)
$UserConfProfManager.StartImport($IncrementalCrawl)$site.Dispose()
}
Ce script est à planifier tous les jours à votre convenance, via le Task Scheduler de Windows.
Il est aussi ajouté au site CodePlex comme les scripts précédents :
Romelard Fabrice [MVP]
Commentaires
Enregistrer un commentaire