Archive

Archive for mai 2009

Problème avec les mappages d’accès de substition suite à l’application du SP2 et du CU Avril – précision


Aujourd’hui, une réponse de Microsoft:

Le problème est présent seulement lorsqu’on applique le Cumulative Update d’avril. Le SP2 ne contient pas le problème.

Donc si votre environnement Sharepoint contient plusieurs mappages d’accès de substitution, il est risqué d’installé le cumulative update d’avril. Installer seulement le Service Pack 2.

Pour ceux et celles qui n’ont pas lu mes deux premiers billets sur le sujet voici les liens :

Problème avec les mappages d’accès de substition suite à l’application du SP2 et du CU Avril

Problème avec les mappages d’accès de substition suite à l’application du SP2 et du CU Avril – la suite

Catégories :MOSS, Service Pack, Sharepoint Étiquettes : ,

SyncUpgradeTimerJob: sleeping for 10 seconds


Lors de l’installation du service pack 2 de Sharepoint sur certains serveurs, l’installation semblait figer ou boucler pendant un très long moment. Un petit tour dans le log d’installation (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\logs\upgrade.log) et on découvre le message suivant à répétition depuis prêt de 20 minutes :

[SPManager] [DEBUG] [27/05/2009 16:51:01]: SyncUpgradeTimerJob: sleeping for 10 seconds
[SPManager] [DEBUG] [27/05/2009 16:51:11]: SyncUpgradeTimerJob: sleeping for 10 seconds
[SPManager] [DEBUG] [27/05/2009 16:51:21]: SyncUpgradeTimerJob: sleeping for 10 seconds
…..
[SPManager] [DEBUG] [27/05/2009 17:20:31]: SyncUpgradeTimerJob: sleeping for 10 seconds
[SPManager] [DEBUG] [27/05/2009 17:20:41]: SyncUpgradeTimerJob: sleeping for 10 seconds
[SPManager] [DEBUG] [27/05/2009 17:20:51]: SyncUpgradeTimerJob: sleeping for 10 seconds

Un petit tour sur le net et on trouve un blog http://community.zevenseas.com/Blogs/Robin/archive/2008/04/19/syncupgradetimerjob-sleeping-for-10-seconds.aspx qui parle du même symptôme que nous même si dans son cas c’était pour le Service Pack 1.

Nous avons tout de même appliqué la même recette soit de redémarrer le service SPTimer et SPAdmin et l’installation du service pack s’est terminée avec succès.

Catégories :Service Pack, Sharepoint Étiquettes : , ,

Problème avec les mappages d’accès de substition suite à l’application du SP2 et du CU Avril – la suite


Hier dans mon premier billet sur le sujet, je présentais les étapes nécessaire pour reproduire le problème. Aujourd’hui, nous sommes parvenus à reproduire le problème beaucoup plus facilement. Voici les étapes :

  1. Créer un application Web et créer une collection de site en utilisant le template de publication qui vient de base avec le produit
  2. Étendre l’application Web vers la zone internet
  3. Créer au moins 6 mappages d’accès de substitution sur la zone Internet comme l’exemple ci-dessous : BugAMM_2
  4. Faire un IISRESET
  5. Essayer de supprimer ou modifier un des mappages d’accès de substitution et vous devriez obtenir l’erreur.
Catégories :Sharepoint Étiquettes : ,

Problème avec les mappages d’accès de substition suite à l’application du SP2 et du CU Avril


Symptôme

Suite à l’application du Service Pack 2 de Sharepoint et du Cumulative Update d’avril, il se produit une erreur technique lors de la mise à jour ou la suppression d’un mappage d’accès de substitution.

Description détaillée du problème et procédure pour reproduire le problème

  • Créer un application Web, l’étendre sur une seconde zone et ajouter environ une dizaine de mappage d’accès de substitution (exemple : www.macompagnie.serveur1.mondomaine). Dans notre cas, avec 5 mappage seulement, on provoque le problème;
  • Installation du Service Pack 2 de Sharepoint;
  • Installation du Cumulative Update de Avril;
  • Tentative de mise à jour des mappages d’accès de substitution. Ça ne fonctionne plus.

Mise à jour : dans le billet suivant, je présente une manière simplifiée de reproduire le problème

Voici le message d’erreur que vous risquer d’obtenir :

Fin de l'analyse de fichier inattendue Name. Ligne 28, position 10. à System.Xml.XmlTextReaderImpl.Throw(Exception e)
à System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
à System.Xml.XmlTextReaderImpl.Throw(Int32 pos, String res, String arg)
à System.Xml.XmlTextReaderImpl.ParseQName(Boolean isQName, Int32 startOffset, Int32& colonPos)
à System.Xml.XmlTextReaderImpl.ParseElement()
à System.Xml.XmlTextReaderImpl.ParseElementContent()
à System.Xml.XmlTextReaderImpl.Read()
à System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)
à System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
à System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
à System.Xml.XmlDocument.Load(XmlReader reader)
à System.Xml.XmlDocument.LoadXml(String xml)
à Microsoft.SharePoint.Administration.SPAlternateUrlCollection.HasMissingUrl(String xml)
à Microsoft.SharePoint.Administration.SPContentDatabase.UpdateAlternateAccessMapping(SPAlternateUrlCollection collection)
à Microsoft.SharePoint.Administration.SPAlternateUrlCollection.UpdateAlternateAccessMappingInContent()
à Microsoft.SharePoint.Administration.SPAlternateUrlCollection.Update()
à Microsoft.SharePoint.Administration.SPAlternateUrlCollection.Delete(Int32 index, Boolean update)
à Microsoft.SharePoint.Administration.SPAlternateUrlCollection.Delete(String incomingUrl, Boolean update, Boolean throwIfNotFound)
à Microsoft.SharePoint.ApplicationPages.EditIncomingUrlPage.BtnDelete_Click(Object sender, EventArgs e)
à System.Web.UI.WebControls.Button.OnClick(EventArgs e)
à System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
à System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
à System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
à System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
à System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

 Nous avons tenté de supprimer la zone, supprimer les mappages par STSADM, rien ni fait.

Un peu de réflexion du code pour en savoir un peu plus nous ammène jusqu’à une function qui reçoit en paramètre AlternateAccessMappingXml. 

Private Function GetDatabaseInformation(ByVal name As String) As String
Dim str As String = Nothing
Dim command As New SqlCommand("dbo.proc_GetDatabaseInformation")
command.CommandType = CommandType.StoredProcedure
command.Parameters.Add("@Name", SqlDbType.NVarChar, &H80).Value = name
Using reader As SqlDataReader = MyBase.SqlSession.ExecuteReader(command, CommandBehavior.CloseConnection)
If Not reader.Read Then
Return str
End If
If reader.IsDBNull(0) Then
Return str
End If
Return reader.GetString(0)
End Using
End Function

Nous sommes donc aller voir dans SQL server la StoreProcedure pour se rendre compte qu’elle ne gère que 1023 caractères ! La procédure retourne donc un document XML tronqué à 1023 caractères.

Informations supplémentaires

Pour l’instant, le problème semble se produire uniquement lors d’une mise à vers le Sp2 et/ou le cumulatif d’avril pour Microsoft Office Sharepoint 2007. J’ai fait quelques tests avec Windows Sharepoint Services qui possédait déjà le SP2 et ça semble bien fonctionner.

Contournement

Nous avons cru qu’en supprimant les mappages d’accès de substitution, qu’en effectuant la mise à jour de la ferme et qu’en recréant les mappages, nous aurions pu éviter le problème mais le problème nous rattrappe avec un message similaire.

Conclusion

Nous sommes à l’étape d’ouvrir un cas chez Microsoft. Plus de détails bientôt…

Mise à jour : Mon collègue Djamel Chagour a rédigé un article en anglais sur le même sujet.

Catégories :Service Pack, Sharepoint Étiquettes : , ,

Gestion des modèles de quotas


Généralités des quotas

Les quotas permettent de contrôler la quantité d’information qu’il est possible de placer dans une collection de site.  L’administrateur Sharepoint peut définir des modèles de quotas et les attribuer aux collections de site. Il est important de noter que la poubelle primaire fait partie intégrante du quota. Par contre, la poubelle secondaire est exlue du calcul. Lorsque la limite inférieure est atteinte, un courrier est expédié à l’administrateur de la collection de site. Un courrier sera expédié à chaque jour jusqu’à ce que la quantité d’information redescende sous cette limite.

Lorsqu’on ne spécifie pas de quota à une collection de site, l’espace de stockage est illimité. Lorsque la limite maximale est atteinte, il n’est plus possible d’ajouter de documents dans la collection de site.

Définition d’un modèle de quota

La définition d’un modèle de quota s’effectue par l’interface Web de l’administration centrale. L’image ci-dessous présente l’information qu’il est possible de préciser.

Modèle de quotas

Assignation d’un modèle de quota par défaut à un application Web

Lorqu’on crée un application Web, il n’est pas possible de spécifier de quota par défaut pour l’application Web. Pour ce faire, il faut plutôt utiliser le menu Paramètres généraux de l’application Web pour spécifier le modèle de quota par défaut. Par défaut, toutes les nouvelles collections de site se verront attribuées ce modèle de quota à moins que la personne qui crée la collection en décide autrement. Il est à noter qu’il est seulement possible de choisir parmi les modèles de quotas qui sont disponible. L’assignation d’un modèle de quota prend toute son importance lorsqu’on utilise un annuaire de site. En effet, lorsqu’on crée une collection de site par l’entremise de l’annuaire, l’interface ne nous permet pas de choisir le modèle de quota.

Modification d’un modèle de quota

La modification d’un modèle de quota s’effectue par la même interface que celle permettant la création d’un nouveau modèle. Il est important de noter que la modification d’un modèle de quota ne se répercute pas sur les collections existantes qui utilisent ce modèle. Si on désire synchroniser le modèle aux collections, je vous suggère d’utiliser une commande STSADM développée par Gary Lapointe. Plus de détail dans le blog de Gary : http://stsadm.blogspot.com/2009/02/synchronizing-quota-settings-via-stsadm.html.

Il existe aussi un autre outil permettant de modifier les quotas pour les collections de site de type « Mon Site » sur CodePlex http://spmysitequota.codeplex.com/.

Modification d’un quota pour une collection spécifique

La modification d’un quota s’effectue par l’administration centrale tel que présentée dans l’image ci-dessous :

QuotaEtVerrou

C’est aussi à cet endroit qu’il est possible d’assigner un quota spécifique pour une collection de site. En effet, si on choisit le modèle « Quota individuel », tel que présenté ci-dessus, on peut spécifier les valeurs désirées uniquement pour cette collection.

Rapport d’attribution de stockage

Un rapport d’attribution de stockage devient disponible lorsqu’on attribue un modèle de quota à une collection de site. L’information est de base et malheureusement, il n’est pas possible d’éclater l’information par site. L’image ci-dessous présente une partie des informations disponibles.

AttributionEspaceStockage

Ouf, un long billet qui fait le tour de la mojorité des éléments concernant les quotas.

Catégories :Sharepoint, WSS Étiquettes : ,

Erreur GDI+ sous Sharepoint


Il y a quelques jours une erreur s’est soudainement manifesté sur les serveurs Web d’une ferme de serveur. L’erreur survenait la nuit lors du recyclage automatisé de l’application pool.

L’erreur ressemble à ceci :


System.TypeInitializationException: The type initializer for 'System.Drawing.ToolboxBitmapAttribute' threw an exception.

Inner: System.Runtime.InteropServices.ExternalException: GDI+ is not properly initialized (internal GDI+ error).

Inner: Nothing

System.Drawing, mscorlib,

at System.Drawing.Bitmap..ctor(Stream stream)

at System.Drawing.ToolboxBitmapAttribute..cctor()

----------

at System.Reflection.CustomAttribute._CreateCaObject(Void* pModule, Void* pCtor, Byte** ppBlob, Byte* pEndBlob, Int32* pcNamedArgs)

at System.Reflection.CustomAttribute.CreateCaObject(Module module, RuntimeMethodHandle ctor, IntPtr& blob, IntPtr blobEnd, Int32& namedArgs)

at System.Reflection.CustomAttribute.GetCustomAttributes(Module decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes)

at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)

at System.RuntimeType.GetCustomAttributes(Type attributeType, Boolean inherit)

at System.ComponentModel.ReflectTypeDescriptionProvider.ReflectGetAttributes(Type type)

at System.ComponentModel.ReflectTypeDescriptionProvider.ReflectedTypeData.GetAttributes()

at System.ComponentModel.TypeDescriptor.TypeDescriptionNode.DefaultTypeDescriptor.System.ComponentModel.ICustomTypeDescriptor.GetAttributes()

at System.ComponentModel.TypeDescriptor.GetAttributes(Type componentType)

at System.Web.UI.ControlBuilder.BuildObjectInternal()

at System.Web.UI.ControlBuilder.BuildObject()

at System.Web.UI.ControlBuilder.BuildChildren(Object parentObj)

at System.Web.UI.ControlBuilder.InitObject(Object obj)

at System.Web.UI.ControlBuilder.BuildObjectInternal()

at System.Web.UI.ControlBuilder.BuildObject()

at System.Web.UI.ControlBuilder.BuildChildren(Object parentObj)

at System.Web.UI.ControlBuilder.InitObject(Object obj)

at System.Web.UI.FileLevelPageControlBuilder.InitObject(Object obj)

at System.Web.Compilation.BuildResultNoCompileTemplateControl.FrameworkInitialize(TemplateControl templateControl)

at System.Web.UI.TemplateControl.FrameworkInitialize()

at System.Web.UI.UserControl.InitializeAsUserControlInternal()

at System.Web.UI.MasterPage.CreateMaster(TemplateControl owner, HttpContext context, VirtualPath masterPageFile, IDictionary contentTemplateCollection)

at System.Web.UI.Page.get_Master()

at System.Web.UI.Page.ApplyMasterPage()

at System.Web.UI.Page.PerformPreInit()

at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Nous avons trouvé un fix chez Microsoft (KB954316) mais comme plusieurs personnes sur le Net avait eu l’erreur et suggérait toutes sortes de solutions, nous voulions aller plus loin dans notre diagnostic avant d’appliquer le correctif. Point non négligeable, nous n’avions pas modifié nos programmes ni le contenu de Sharepoint. 

À l’aide de l’outil process monitor, nous avons suivi le process W3Wp.exe lors de son recyclage. Nous avons découvert qu’il y avait des « Access Denied » sur certains répertoire. Des recherches supplémentaires nous permettent de découvrir qu’un administrateur Sharepoint avait activé et configuré le Traitement de l’analyse d’utilisation. Le compte de l’application pool n’avait pas accès au répertoire spécifié. Après lui avoir donné les droits en modification, le recyclage automatique de l’application pool ne génère plus la fameuse erreur GDI+.

Leçon apprise : avant d’installer un fix, même s’il semble être destiné à notre cas, il est toujours préférable de bien valider notre configuration.

Catégories :Sharepoint Étiquettes :

Sortie de Sharepoint SP2, du SDK 1.5 et du cumulative update d’avril


Service Pack 2

La sortie du service pack 2 de WSS et Sharepoint a eu lieu le 30 avril dernier. Le tout a fait beaucoup de bruit dans la blogosphère dans les derniers jours et vous pouvez trouvez tous les détails à l’adresse suivante : http://blogs.msdn.com/sharepoint/archive/2009/04/28/announcing-service-pack-2-for-office-sharepoint-server-2007-and-windows-sharepoint-services-3-0.aspx

J’ajouterais simplement que si vous utilisez la portion gestion de contenu Web et les variations, ce service pack est fortement recommandé par Stephan Gossner.

WSS SDK 1.5 et MOSS SDK 1.5

La sortie de la version 1.5 des SDK est presque passée inaparçu tellement le service pack 2 a fait de bruit. N’empêche que c’est un outil important du coffre à outils de tous développeur WSS ou MOSS. Le détail et les liens pour le téléchagement à l’adresse suivante : http://blogs.msdn.com/randalli/archive/2009/05/01/sharepoint-sdk-1-5-april-2009-released.aspx

April Cumulative Update for WSSV3 et MOSS 2007

Enfin et non le moindre, voici les updates cumulatifs pour avril pour WSS et MOSS. Ceux-ci sont des fixs POST SP2. Le détail à l’adresse suivante : http://blogs.msdn.com/joerg_sinemus/archive/2009/05/01/should-i-install-sp2-and-or-april-cu.aspx

Bien des heures de plaisirs à l’installation et d’essais pour s’assurer que tous fonctionne aussi bien qu’avant.

Catégories :Service Pack, Sharepoint, WSS Étiquettes : , ,
%d blogueurs aiment cette page :