La recherche Sharepoint ne renvoie plus rien

18 août 2010 par Djeepy1

Non, je ne change pas de branche, je reste expert SQL Server mais je voulais faire une petite KB sur un problème rencontré sous Sharepoint.

Le problème est le suivant : la recherche dans un site Sharepoint ne fonctionne plus

Checklist :

  • vérifiez le bon fonctionnement des Services suivants
  • Office SharePoint Server Search
  • Windows SharePoint Services Search
  • regardez l’Event Viewer (un bon réflexe en troubleshooting)
  • vérifiez la configuration de la recherche
    • Allez dans la “Central Administration”, dans la configuration de votre site
    • Allez dans la section Search
      image
    • Vérifiez l’état de l’indexation
      image
    • Vérifiez les erreurs dans “Content sources and crawl schedules” et éventuellement relancez un Crawl
      image
    • Vérifiez le compte utilisé pour l’indexation. En l’occurrence, c’était mon cas. Quelqu’un a changé le mot de passe de ce compte qui par conséquent se prenait un Logon Failure

     

    Moralité : utilisez des comptes de services dédiés (et ne les changeaient pas) !

    Merci à Kazoumoulox pour son aide.

    Liste des rapports SSRS

    3 août 2010 par Djeepy1

    J’ai souvent besoin lors d’une mission de conseil de faire un petit état des lieux des rapports qui se trouvent sur une instance SSRS.

    Pour dresser cette liste rapidement, il suffit de jouer la requête suivante sur votre base de données ReportServer :

    SELECT [Path]
    
          ,[Description]FROM [ReportServer].[dbo].[Catalog]WHERE Type = 2

    Et pourquoi ne pas en faire un rapport ;-)

    10 trucs sur moi

    7 juillet 2010 par Djeepy1

    Je ne suis pas du genre à suivre ces jeux débiles qui trainent sur le net. Là, on me branche sur une sorte de portrait chinois dans lequel je dois révéler 10 trucs sur moi.

    Djeepy1 Au départ, c’est David qui a lancé l’idée (on se demande d’où elle lui ait venue d’ailleurs). Après quelques rebonds, Benoît (nouveau MVP Team) me file le bébé.

    Ca ressemble à un Hoax mais ce sont bien des choses sur moi :) . Et pas besoin de le transférer à 10 amis pour trouver l’être aimé et gagner un abonnement d’un an à Movida.

    Let’s go…

    1. Mon père a été syndicaliste dans la métallurgie pendant près de 20 ans; et pas du genre j’achète mes timbres tous les ans, plutôt dans le genre activiste avec des responsabilités régionales. J’ai grandi dans les grandes doctrines de la lutte des classes. J’ai même failli virer communiste :) .
    2. Mon premier jour de travail rémunéré a été un 1er mai chez Mc Donald’s. A mon premier bulletin de salaire, j’ai épluché toute une nuit le Dalloz de papa et j’ai réussi à me faire payer double mon premier jour. Une révolution chez McDo. Merci papa.
    3. Ma mère est née à Brazzavile au Congo et y a vécu 9 ans (Bangui, Libreville et Port-Gentil). Mes grands-parents sont partis à 20 ans faire leur vie là-bas, à l’aventure (on était en 54).
    4. A 10 ans, j’ai perdu mes clés un après-midi en jouant avec des copains. Je me suis pris une soufflante tellement énorme qu’encore aujourd’hui j’ai une poussée d’angoisse quand je ne sais pas où sont mes clés pendant plus de 10 minutes (mon père ne voulait pas que je rentre tant que je ne les avais pas retrouvées) .
    5. Je suis fan de catch depuis plus d’1 an. Je regarde 2 fois par semaine Catch Attack sur NT1 et une fois par mois le Pay-Per-View sur Canal. Pour moi, c’est comme regarder un SOAP, il faut que je sache la suite. Et puis quand vous aurez vu Maryse et Kelly Kelly, vous comprendrez mieux.
    6. Petit, je voulais devenir vétérinaire-zoologiste. Et tout le monde me demandait pourquoi je rajoutais “-zoologiste”. C’est en fait parce que je voulais signaler que je voulais devenir vétérinaire et étudier les animaux en Afrique. Et puis j’ai découvert que j’avais une phobie des serpents (en fait, j’ai surtout découvert les filles et l’alcool).
    7. J’ai arrêté de fumer du jour au lendemain le 7 mars 2003. 6 mois après, j’ai (re)découvert le goût du cigare dont je suis maintenant un consommateur habituel (2/3 par semaine).
    8. Vers 1984-85, mon père a acheté un MSX (quand MS a essayé de faire du hardware). On avait tout un tas de revues et de livres de programmation à la maison. Pour jouer, je recopiais les sources des jeux en BASIC (LOCATE, GOTO, POKE, etc.) et le soir venu, quand j’éteignais, je perdais tout car il n’y avait pas de disque dur. Après, on a eu le lecteur de cassettes (ouahhh).
      Finalement, le choix de mes parents de prendre un ordinateur plutôt que la collection des “tout l’univers” a été payant :) .
    9. J’ai eu les cheveux longs. J’ai eu les cheveux bleus. Pas à la même période. Il n’existe pas de photo de cette époque.
    10. J’aime faire du shopping en centre-ville ou dans les galeries marchandes, j’adore les fringues, et NON, je ne suis pas gay.

    Voila, c’était rigolo finalement et vous me regarderez différemment maintenant, surtout en essayant d’imaginer ma tête avec des cheveux longs en écoutant les Gun’s.

    Je passe maintenant la main à Cyril.

    SSIS – Erreur –1071607685 – No Status Available

    29 juin 2010 par Djeepy1

     

    Dans vos packages Integration Services, si vous êtes confrontés à cette erreur… :

    Error Code : –1071607685
    Error Column : 0
    Error Desc : No Status Available

    …ne cherchez pas pendant des heures. Regardez en premier lieu dans les composants destination et désactivez les options Fast Load.

    FastLoad

    Cette option fait une insertion en mode BULK et par défaut en batch de 10 000 enregistrements. Si au moins l’un de ceux là est en erreur (doublon, clé étrangère manquante, valeur invalide, etc.), c’est le batch qui part dans le flux d’erreur et aucune description d’erreur n’est disponible.

    La première chose à faire pour déboguer est de désactiver l’option pour avoir des INSERT ligne à ligne. Vous verrez donc l’erreur qui fait planter le batch.

    Mais alors comment faire dans la vraie vie. Plusieurs idées :

    1. Dans le cadre d’un ETL de DataWarehouse, il faut faire toute les vérifications AVANT l’insertion (c’est aussi une des raisons pourquoi on ne met pas de Foreign Key). Votre DataFlow doit garantir la validité des données (et prendre les actions correctrices nécessaires)
    2. Utiliser un paramètre DEBUG pour désactiver l’option à la volée en production (il faudra passer par une variable et un conditional split)
    3. Utiliser la technique du double-essai. On fait d’abord une première insertion en mode FastLoad, on redirige la sortie d’erreur sur un INSERT normal. Ainsi, dans (normalement) la majorité des cas, vous ferez du Bulk et le deuxième essai permet de limiter les dégats d’un batch qui part à la poubelle (et surtout vous donnera les détails de l’erreur).

    Compatibilités et versions de Report Builder

    19 juin 2010 par Djeepy1

    En ces temps de nouvelles versions (je vous rappelle que SQL Server 2008 R2 est sorti il y a quelques semaines), un petit point sur Report Builder.

    Ci-dessous, la matrice de compatibilité. Pour un rapport réalisé avec tel version d’outil, sur quelle version le déployer…

    SSRS 2008

    SSRS 2008 R2

    Report Builder 2.0

    OK

    OK

    Report Builder 3.0

    KO

    OK

    BIDS* 2008

    OK

    OK

    BIDS* 2008 R2

    OK
    (avec la bonne configuration)

    OK

    BIDS : Business Intelligence Development Studio (en fait, juste les template de projet BI pour Visual Studio :) )

    Pour configurer BIDS, il suffit d’aller dans les propriétés du projet :

    propriete report project 

    Et dans la série des liens utiles, les versions Stand Alone de Report Builder sont disponibles à ces adresses :

    After BDC

    1 juin 2010 par Djeepy1

    Les 2 BDC 2010 (Toulouse et Aix) ont eu lieu en avril et mai.

    Faut-il rappeler que BDC est l’acronyme de Bewise Day Conference, le haut-lieu des conférences sur les technologies Microsoft du sud de la France ?

    Quoiqu’il en soit, continuez à vibrez avec nous autour des dernières technologies sur le site de l’After BDC qui est maintenant ouvert.

    Rendez vous sur http://afterbdc.bewise.fr/ pour partager vos commentaires, retrouver les photos des événements, télécharger les sources des démos.

    Plenière BDC

    A tout de suite.

    Tuning des attributs de dimension dans Analysis Services

    21 mai 2010 par Djeepy1

     

    Les attributs d’une dimension dans un cube servent à la base à analyser les données selon les valeurs qu’ils contiennent. Par exemple, dans une dimension produit, on peut avoir des attributs comme la couleur, le poids, la gamme, le nom du designer qui l’a créé, etc.

    Dans la vraie vie, une dimension peut contenir un grand nombre d’attributs. Le problème est que souvent, certains attributs n’ont rien à voir avec de l’analyse. Par exemple, un attribut Adresse dans une dimension client n’est pas un bon candidat pour l’analyse (et je parle bien de l’adresse du genre “3 rue des macarons cuits”, pas de la ville ou du code postal).

    image

    Néanmoins, on trouve souvent ce genre d’attributs à des fins de présentation dans un rapport (pour du publipostage ou de l’export par exemple).

    Mon premier avis serait d’orienter ce genre de restitution de données vers une base de production (ou tout du moins dans une base relationnelle) comme source de données et non un cube mais ce n’est pas toujours possible.

    L’approche que j’utilise est la suivante. Je catégorise avec mon client les attributs :

    • Attribut d’analyse : utilisé pour ventiler les mesures
    • Attribut intermédiaire : attribut technique utilisé dans une Referenced Dimension Usage par exemple
    • Propriété simple : utilisé pour afficher des méta-données sur le client

    En fonction de ma classification, je configure les attributs différemment pour optimiser mon cube :

    image

    Enabled

    Visible

    OptimizedState

    Attribut d’analyse

    True

    True

    FullyOptimized

    Attribut intermédiaire

    True

    False

    NotOptimized

    Propriété

    False

    N/A

    NotOptimized

    Il y a toutefois encore un problème à résoudre. En effet, le fait de mettre AttributeHierarchyEnabled à false, empêche de voir la propriété dans les assistants d’un outil comme Report Builder.

    En effet, en requêtage MDX, on récupère un CellSet qui peut contenir, si on les demande dans la requête, les méta-données mais il faut que le client OLAP sache les exploiter correctement.

    Par exemple, Excel (2007+) sait les demander et les afficher nativement.

    image

    Dans Report Builder, on devra passer par un membre calculé pour remonter la propriété comme une mesure avec une expression comme celle-ci.

    [Tiers].CurrentMember.Properties(“Adresse”)

    La méthode est décrite dans ce post :
     http://blog.djeepy1.net/2009/01/27/report-builder-2-0-creer-un-membre-calcule-sans-passer-par-ssas/

    Obtenir les métadonnées d’un cube via PowerShell

    13 mai 2010 par Djeepy1

    Cas pratique : obtenir la liste des attributs des dimensions leurs caractéristiques et leurs croisements avec les groupes de mesures (sous format exploitable type Excel évidemment).

    Une solution pragmatique eut été d’affecter un stagiaire à cette tâche et de lui demander de prendre le projet et de tout transcrire dans un fichier Excel.
    Mais, évidemment, je n’ai pas pour habitude de procéder de la sorte et j’avais besoin de la liste très rapidement.

    Je me suis donc tourné vers PowerShell car je sais qu’il y a une extension pour SQL Server et plus précisément pour Analysis Services.

    Ce billet n’a pas pour but de vous apprendre PowerShell mais de vous montrer les commandes utiles pour fouiller dans SSAS.

    Pour commencer, il faut charger les commandes SSAS :

    [Reflection.Assembly]::LoadWithPartialName
    ("Microsoft.AnalysisServices")

    Ensuite, on se connecte au serveur (vous noterez que j’utilise des variables – $server, $cubeid, etc.)

    $server = New-Object Microsoft.AnalysisServices.Server
    $server.connect($servername)

    Ensuite, on récupère le cube dans la bonne base de données

    $cube = $server.Databases.Item($database).Cubes.Item($cubeid)

    Enfin, je n’ai plus qu’à itérer sur les groupes de mesures pour récupérer les données

    foreach ($mg in $cube.MeasureGroups)
    {
        foreach ($dim in $mg.Dimensions) {
            foreach ($attr in $dim.CubeDimension.Attributes) {
                $row = $mg.Name + ‘,’+
                 $mg.ID + ‘,’+
                 $dim.Dimension.Name + ‘,’ +
                 $dim.Dimension.ID + ‘,’ +
                 $dim.GetType().ToString()
                $row | out-file -append $filename
            }
        }
    }

    Le modèle objet d’Analysis Services n’est pas compliqué même si ce n’est pas trivial non plus.
    Vous pouvez trouver des informations sur ce modèle dans la MSDN ici : http://msdn.microsoft.com/fr-fr/library/microsoft.analysisservices.cube(v=SQL.105).aspx

    Editions SQL Server Analysis Services

    12 mai 2010 par Djeepy1

    J’ai récemment suivi un débat sur le moyen de freiner les développeurs afin qu’ils s’en tiennent aux fonctionnalités de l’édition en production (ie. l’édition Standard).

    Avec SQL Server, il est difficile de bloquer les développeurs pendant la phase de réalisation. Avec Analysis Services, il existe un moyen.

    Dans le propriétés du projet, on peut en effet viser l’édition cible.

    image

    On obtient dans certains onglets un avertissement nous mettant en garde de l’indisponibilité de la fonctionnalité en édition standard.

     image

    Cependant, cet avertissement n’est pas levé sur toutes les fonctionnalités… En effet, on peut mettre des mesures semi-additives ou non-additives sans avoir un seul warning :-( .

    Vous comprendrez ma déception en fin de journée après avoir constaté qu’un agrégat de type DistinctCount ne fonctionnait pas en production alors qu’il marchait très bien sur ma plate-forme de développement.

    Je savais pour LastNonEmpty mais maintenant, j’ai appris par cœur les types d’agrégats et les éditions qui les supportent.

     

    Pour soutenir cette feature sur Connect :
    https://connect.microsoft.com/SQLServer/feedback/details/558728/add-warning-in-bids-when-using-semiadditive-or-nonadditive-aggregate-in-standard-edition-target

    Démos Reporting Services 2008 R2

    2 avril 2010 par Djeepy1

    Aux TechDays 2010, j’ai aussi eu la chance d’accompagner the famous Pascal Belaud sur une session ludique des nouveautés de SQL Server 2008 R2.

    J’assurai la partie Reporting Services avec quelques démos sur les nouveautés :

    • Nouveau Report Manager
    • Report Parts et Report Gallery
    • Shared Datasets
    • KPI, Sparkline, Databar
    • Cartographie

    La vidéo se trouve ici :

    http://www.microsoft.com/france/vision/mstechdays10/Webcast.aspx?EID=32499E98-3D41-42DA-A396-B6F030697957