ASCMD : Parametrez vos scripts SSAS.

Publié par Fabrice Michellonet sous le(s) label(s) le 22 septembre 2008

Beaucoup d'entre vous doivent dors et déjà connaitre cette astuce qui facilite les problématiques de déploiement de vos cubes Olap (Sql Server Analysis Services); Pour ma part je n'ai découvert qu'aujourd'hui qu'il est possible de parametrer les scripts XMLA, MDX et DMX lors de leur execution via ASCMD.

Petit retour en arrière, ASCMD est un utilitaire en ligne de commande qui permet d'exécuter des scripts sur une instance d'Analysis Services locale ou distante. Le code source est fournit dans les samples de SQL Server sous forme d'un projet C# à compiler.

Dans le cadre d'une livraison chez un de vos client par exemple, ASCMD s'avère fort utile car il permet de scripter toutes les opérations possible que vous souhaiter effectuer; ceci vous affranchit de la lourde tache des backup/restore couramment usités dans la version 2000 d'Analysis Services.

Prenons un exemple concret; Le script suivant, permet de modifier le nom du serveur sur lequel est disponible la source de données relationnelle :


<Alter ObjectExpansion="ExpandFull" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>Adventure Works DW</DatabaseID>
<DataSourceID>Adventure Works DW</DataSourceID>
</Object>
<ObjectDefinition>
<DataSource xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xsi:type="RelationalDataSource">
<ID>Adventure Works DW</ID>
<Name>Adventure Works DW</Name>
<ConnectionString>Provider=SQLNCLI.1;Data Source=$(ServerName);Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=AdventureWorksDW</ConnectionString>
<ImpersonationInfo>
<ImpersonationMode>ImpersonateServiceAccount</ImpersonationMode>
</ImpersonationInfo>
<Timeout>PT0S</Timeout>
</DataSource>
</ObjectDefinition>
</Alter>

Notez la déclaration et l'utilisation de la variable $(ServerName). Celle-ci va pouvoir être définit lors de l'execution de la manière suivante :

ascmd.exe -S localhost -i modifyDS.xmla -v ServerName=My_production_server

Cette fonctionnalité ouvre de nouveaux horizons pour les déploiements, plus besoin de demander à vos interlocuteurs de faire ceci ou cela;

  • Scriptez vos actions sous forme de scripts XMLA parametrés.
  • Livrez un fichier ini, seul point que votre interlocuteur devra éditer afin de le faire correspondre à son environnement.
  • Demander à votre interlocuteur de lancer le seul fichier fichier bat fournit réunissant l'ensemble des commandes à executer.
  • Vous êtes zen, vous venez de considérablement diminuer les chances d'erreurs du à une mauvaise manipulation de votre interlocuteur.

Bon déploiements à tous.

2 commentaires:

Cédric a dit… @ 6 avril 2010 15:09

Je vois des liens internet dans le xml, est-ce que cela fonctionne que sur des serveurs qui sont sur Internet? dans ce cas reconnaissez que c'est très limité, non?

Fabrice Michellonet a dit… @ 6 avril 2010 16:41

Bonjour Cédric.

je vous rassure, ASCMD fonctionne avec des serveurs non branchés sur Internet. Effectivement cela serait embêtant dans le cas contraire.

Les "liens" que vous pointez sont des namespace xml qui permettent de garantir l'unicité des balises au sein d'un seul et même document XML.
La spécification, spécifie même que les URL n'ont pas besoin de pointer sur un document physique; il est d'ailleurs possible d'utiliser une chaîne de caractère quelconque. L'utilisation d'une URL renforce l'unicité de la balise;
Donc pas de soucis, vous pouvez utiliser cet utilitaire peu importe la typologie réseau sur laquelle se trouve le serveur.

Enregistrer un commentaire