vendredi 17 décembre 2010

Changer la base SSAS par défaut

Voici le problème auquel j’ai été confronté : des utilisateurs requêtant AS via Excel, disposent d’une chaîne de connexion sur cette instance AS sans avoir précisé la base de données (mot clé Catalog absent de la connection string : à éviter). Après quelques heures d’utilisation, ils se rendent compte que leurs chiffres ne sont pas bons et pour cause. La veille, de nouvelles versions de leurs bases de données avaient été livrées dans un ordre qui, je ne sais pas pourquoi, a fait changer la base dite par défaut. Du coup, leurs requêtes attaquaient la mauvaise base de données (le Catalog n’étant pas précisé, la base par défaut est utilisée).

Ma question : comment déterminer la base qui est utilisée par défaut par notre instance ? Sur SQL, une requête du type Exec sp_defaultdb @loginame='monLogin', @defdb='maBase' permet de modifier ce paramètre facilement. Je n’ai pas trouvé l’équivalent sur SSAS, en tous les cas pas en 2005 (je n’ai pas regardé pour 2008 et 2008R2).

En fouillant un peu dans les fichiers xml d’AS, j’ai trouvé la solution. Chaque base de données possède un fichier qualifié de « référence » pour l’ensemble de l’instance. Le nom de ce fichier est de la forme NomDeMaBaseAS.db.xml. Il contient entre autre le nom et l’ID de la base, les paramètres de traduction, les annotations, etc. Il contient également une propriété qui se nomme Ordinal, et qui précise justement la place de la base de données parmi les autres via un numéro. Si l’ordinal est 0, cette base sera la première, 1 la seconde et ainsi de suite. La base possédant le plus petit ordinal sera celle qui sera considérée comme étant celle par défaut. Il suffit donc de s’arranger pour que la base que vous souhaitez définir comme étant celle par défaut possède le plus petit ordinal. Fastidieux quand il y a beaucoup de base de données (une petite astuce pour éviter d'avoir à parcourir tous les fichiers pour trouver le plus petit ordinal consiste à donner une valeur négative à l'ordinal de la base par défaut : ça marche). C’est pour cela que si jamais vous connaissez une autre solution, je suis preneur. Autre précision, je ne sais pas comment sont déterminés ces ordinaux au moment des déploiements.

vendredi 3 décembre 2010

Passage du MCT

Aller hop, un autre sujet que SSAS pour changer. Je viens de passer avec succès ma certification MCT (Microsoft Certified Trainer). Pour info, cette certification est indispensable pour pouvoir dispenser des cours officiels Microsoft (ça tombe bien, j’avais ambitionné de devenir professeur de physique-chimie à la sortie du Bac). Bien entendu, la partie qui va me concerner, c'est la BI (il faut d'ailleurs être MCITP avant d'être MCT, pour SQL Server 2008, ce sont les certifications 70-448 et 70-452 pour la BI).
L'examen se compose de deux parties. La première consiste en un QCM qui propose 10 situations conflictuelles à gérer, auxquelles il faut trouver le bon comportement à adopter. Par exemple, une situation du type : un étudiant ne se sent pas concerné par ce que vous raconter, comment le réintégrer au groupe?
La seconde partie est une présentation d’un sujet technique en 15 minutes. Le sujet sur lequel je suis tombé est « la présentation du panneau de configuration ». Autant dire que vous ne serez pas évalués sur vos connaissances, mais bel et bien sur la forme de votre prestation orale.

Les points clés pour une certification réussie :
  • Une bonne présentation orale (prestance, voix, ton, mouvement dans la salle, etc.)
  • Un brin de diplomatie dans la gestion des conflits (pour le QCM)
  • Un support de formation propre (Power Point, à préparer par vos soins avant le passage de la certification)
  • Une attention particulière à vos étudiants (est-ce qu’ils suivent, est ce qu’ils ont tout compris)
  • Interaction avec votre auditoire
Si certains d’entre vous se sentent l’âme d’un formateur…

mardi 16 novembre 2010

Extraire votre script XMLA de création de base SSAS en AMO

On m’a demandé il n’y a pas longtemps s’il était possible de récupérer le script de création d’une base AS. Bien entendu, Managment Studio permet de le faire simplement. Mais dans le cas qui nous intéresse, le script de création devait être récupéré lors des backups, donc de manière automatisée.
Pour cela, il y a des classes en AMO qui permettent de le faire assez facilement. Un code du genre de celui-ci-dessous vous en donne un exemple :

vendredi 8 octobre 2010

Une opération de processing semble bloquée sur mon instance AS 2005

J'ai récemment constaté un problème de blocage des processing de cube AS. Dans un premier temps, on a tendance à penser que le processing dure juste plus longtemps qu'à l'accoutumé. Mais quand ça fait 12h que ça tourne pour une opération qui prend en temps normal 1h, y’a quand même de quoi se poser des questions.
En observant les compteurs de performance, on constate que, dans mon cas, l’instance est toujours en train de calculer les indexes de mes partitions, et ça fait longtemps que ça dure :

mardi 28 septembre 2010

HardMemoryLimit sur SSAS 2008

Si comme moi vous faites (encore) du tunning d'instances SSAS 2005, vous connaissez certainement les propriétés LowMemoryLimit (LML) et TotalMemoryLimit (TML). L'objet de ce billet n'est donc pas de présenter la fonction de ces deux éléments : pour cela vous trouverez des informations ici (page 92).

Edit du 08/10/2010 : Je viens de tomber sur un post du très bon blog de François Jehl qui explique les subtilités de ce paramétrage : voir ici

AS 2008 introduit une nouvelle propriété pour son modèle de gestion de la mémoire : le HardMemoryLimit (HML). Peu de documents parlent de cette propriété. J'ai trouvé une référence ici (merci Thomas).
Le HML se paramètre de la même manière que le LML et le TML. Il permet de rentrer dans un mode encore plus agressif de nettoyage de la mêmoire : si besoin l'ensemble de la mémoire shrinkable pourra être vidée, de même que les commandes en cours (processing et requête) pourront être annulées.
Attention cependant, de manière analogue aux LML et TML, le HML ne constitue pas une limite physique de consommation de la mémoire, ce qui nous fait d'ailleurs penser que son nom est mal choisi.

Source :

mardi 21 septembre 2010

Modifier le rôle administrateur en XMLA

Dans la série "c'est toujours bon de savoir comment faire autrement", voici une brève présentation de la manière de modifier les rôles serveurs sur SSAS autrement que par Management Studio.
Pour rappel, le rôle serveur est celui qui permet d'être administrateur de l'instance AS (attention, pas du service AS, mais juste de la partie management des données, les droits sur le service sont au niveau de l'OS).
Sur SSMS, nous procédons de la sorte : clic droit sur l'instance, Properties puis Security.
Avec ASCMD, un XMLA avec cette tête permet de se passer de Management Studio (un vraie plaie de temps en temps) :

<Alter AllowCreate="true" ObjectExpansion="ObjectProperties" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
  <Object>
    <RoleID>Administrators</RoleID>
  </Object>
  <ObjectDefinition>
    <Role xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <ID>Administrators</ID>
      <Name>Administrators</Name>
      <Members>
        <Member>
        <Name>Domaine\Nom</Name>
        </Member>
      </Members>
    </Role>
  </ObjectDefinition>
</Alter>

mercredi 15 septembre 2010

Changer l'emplacement du fichier de configuration d'AS (msmdsrv.ini)

Voici une astuce permettant la modification de l'emplacement du fichier de configuration de votre instance SSAS.
Pour rappel ce fichier de configuration contient les propriétés de votre instance SSAS (les MemoryLimit, le chemin de vos fichiers de données, les paramètres du FlightRecorder, etc.).
La modification de son emplacement se fait via l'éditeur de registre. Il faut modifier la valeur d'ImagePath située dans HKLM-SYSTEM-CurrentControlSet-Services puis MSSQLServerOLAPService (pour une instance par défaut) ou MSOLAP$InstanceName (pour une instance nommée). Le chemin du msmdsrv.ini se trouve après l'option -s
Petit conseil, la manipulation doit se faire avec l'instance AS éteinte.

Remarque : si jamais l'emplacement spécifié dans la clé de registre n'est pas le bon (une faute de frappe est si vite arrivée), SSAS va quand même démarré et va créer un fichier de configuration tout neuf à l'emplacement spécifié, mais avec tous les paramètres par défaut. Prudence donc si vous avez customisé votre fichier, car dans ce cas, les valeurs de vos paramètres seront celles que nous trouvons à l'installation de l'instance.

mardi 27 juillet 2010

Vider le cache des objets SSAS

Je remets ici un morceau de code bien pratique qui permet de vider le cache de quelques objets sur SSAS.
Au niveau de la base :
<ClearCache xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
  <Object>
    <DatabaseID>Adventure Works DW 2008</DatabaseID>
  </Object>
</ClearCache>


Au niveau du cube d’une base :
<ClearCache xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
  <Object>
    <DatabaseID>Adventure Works DW 2008</DatabaseID>
    <CubeID>Adventure Works</CubeID>
  </Object>
</ClearCache>


Pour un groupe de mesure :
<ClearCache xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
  <Object>
    <DatabaseID>Adventure Works DW 2008</DatabaseID>
    <CubeID>Adventure Works</CubeID>
    <MeasureGroupID>Internet Orders</MeasureGroupID>
  </Object>
</ClearCache>


Attention, ces commandes XMLA nécessitent bien l’ID des objets, et non leur nom. Sous Management Studio, pour les bases de données et les cubes, on retrouve l’information dans les propriétés de ces objets (clic droit-Properties).
En revanche, cette manipulation n’est pas possible pour les groupes de mesures. Dans ce cas, on peut le faire de cette manière : clic droit sur le groupe de mesure-Script Measure Group As-Create To et récupérer l’ID dans le script de création. D’ailleurs, si jamais vous avez une autre solution, je suis preneur : celle-ci ne me satisfait pas.
Et pour ne pas avoir à rechercher par la suite ces scripts, nous pouvons les intégrer aux templates déjà présents sur Management Studio (merci Romuald). Pour cela, allez dans le menu View - Template Explorer pour afficher le volet Template Explorer, puis cliquez sur le cube de la fenêtre pour visualiser les modèles.


lundi 26 juillet 2010

Freeze d'AS : Concurrence entre Processing et MDX

Voici un problème récurrent de freeze constaté sur une instance SSAS 2005 auquel j’ai été confronté un certain nombre de fois (attention, ce problème n’a pas été constaté sur 2008).

jeudi 22 juillet 2010

Utilité du ForceCommitTimeout

Voici un petit cas d’utilisation permettant de montrer l’utilité du paramètre ForceCommitTimeout d’AS :
  • Lorsque vous lancez un process de vos données (Cube ou Dimension), AS va d’abord écrire dans des fichiers différents de ceux qui existent actuellement dans son système de fichiers. La raison à cela, c’est de pouvoir permettre par exemple aux MDX lancées avant le début du process de se terminer correctement.
    Pour visualiser ce phénomène simplement, allez par exemple dans le répertoire contenant les données de faits de la partition 2001 du groupe de mesure Internet Sales de votre base Adventure Works préférée, puis faites un Process de la partition. Vous devriez voir apparaître dans votre répertoire des fichiers supplémentaires avec dans leur nom, un numéro incrémenté de un par rapport au nom de la version des fichiers existants avant le process (en fonction du type de process utilisé, tous les fichiers ne sont pas obligatoirement modifiés).

mercredi 21 juillet 2010

Tracer SQL Browser

Dernièrement, j'ai eu un problème de perte de connexion complètement aléatoire sur AS (je ferai un compte rendu sur ce problème dans un autre post). J'ai cherché à savoir à quel niveau se trouvait cette perte de connexion : donc forcément on pense au SQL Browser à un moment ou à un autre.
Question : comment tracer les évènements de ce service? Il faut le lancer avec l'option -c (sqlbrowser.exe -c). De cette manière, vous voyez toutes les connexions résolues par le Browser et les erreurs sont "loguées" dans l'Event Viewer de votre serveur.