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.

2 commentaires:

  1. Bonjour,
    travaillant actuellement sur la suite SQL Server BI, je rencontre un problème de déploiement du projet SSAS créé lorsque je souhaite l'installer sur le serveur local d'une autre machine.


    Pensez vous que cela soit possible? (J'espère que oui..:) Si oui, comment faire? Quelles sont les étapes à respecter ?
    Pour le moment, j'ai utilisé l'assistant déploiement de SSAS, puis exécuté sur SSMS le script XMLA sans succès. Lorsque j'ouvre le projet SSAS sur l'autre ordinateur, il est impossible de le déployer, même si je peux voir tous les éléments du projet (cubes, dimensions...).

    Je vous remercie par avance pour toute réponse.
    Bien cordialement.

    RépondreSupprimer
  2. Bonjour,

    Je n'ai pas bien compris la partie "l'installer sur le serveur local d'une autre machine".
    Ce que vous voulez faire c'est déployer votre base AS depuis votre poste de développement vers un serveur dédié? C'est bien cela?

    RépondreSupprimer