Mois: avril 2011

SQL Internals Viewer et SQL 2008 R2

Il existe un outil très intéressant sur CodePlex pour analyser visuellement la fragmentation interne de vos fichiers MDF et NDF.

Internals Viewer for SQL Server

image

Cet outil gratuit se présente sous la forme d’un addin à Management Studio (SSMS). Il détaille toutes les pages par index.

Sauf qu’entre SQL Server 2008 et 2008 R2, il y a eu des modifications dans les API entrainant une incompatibilité (breaking change en anglais). Si vous le téléchargez, vous aurez une erreur au démarrage (No such interface supported).

Pour le faire fonctionner (sans revenir à la version précédente de Management Studio), je vous invite à télécharger le code et supprimer ces quelques lignes :

 

/*
 * Legacy Code (SQL 2005 et 2008) 
 */
//IObjectExplorerEventProvider provider = ServiceCache.GetObjectExplorer().GetService(typeof(IObjectExplorerEventProvider)) as IObjectExplorerEventProvider; 
//provider.NodesRefreshed += new NodesChangedEventHandler(Provider_NodesRefreshed); 
//provider.NodesAdded += new NodesChangedEventHandler(Provider_NodesRefreshed); 
//provider.BufferedNodesAdded += new NodesChangedEventHandler(Provider_NodesRefreshed); 

 

Il vous faudra également mettre à jour quelques références (SmoEnum qui n’existe plus par exemple ou bien le chemin vers les assemblies si vous êtes en x64). Redéployez et le tour est joué.

Evidemment, ce n’est pas la solution la plus académique mais c’est pragmatique en attendant un vrai support des Addins dans SSMS.

 

Merci à Jonathan Kehayias (SQL 2008 R2 Breaks SSMS Addins) même si ça n’a pas tout résolu Sourire.

Merci à mes partenaires de tarot qui ont supporté ma séance de débogage pendant nos parties.

Plusieurs membres par défaut

Si vous cherchiez à utiliser un Set (ensemble de membres) comme sélection par défaut dans une dimension, autant vous le dire tout de suite, ce n’est pas possible.
Vous noterez que DefaultMember (membre par défaut) est au singulier Clignement d'œil.

image

Donc comment faire pour avoir plusieurs membres (pas de mauvais jeu de mots…) ?

La solution passe par la hiérarchisation de votre dimension. Mettre une hiérarchie permet d’ajouter des nœuds intermédiaires regroupants plusieurs membres enfants.

Ex : vous avez une dimension [Catégorie] et vous voulez avoir comme membre par défaut les catégories [Catégorie].[Vente Produits] et [Catégorie].[Divers]. Il faut donc utiliser par exemple [Catégorie].[Hiérarchie].[Ventes] qui contiendra nos 2 catégories visées.

Et en utilisant un Named Set dans les calculs du cube ? On peut être tenté d’en créer un et de l’utiliser.

CREATE STATIC HIDDEN SET CURRENTCUBE.[DefaultCat] AS {[Catégorie].[Vente Produits] , [Catégorie].[Divers]} 

Sauf qu’un Named Set est par définition un Set et non un membre. En plus le Named Set se trouve sur le cube et pas sur la dimension. Même avec un ALTER CUBE, vous aurez une erreur (La fonction  attend une expression de hiérarchie pour l’argument. Une expression d’ensemble de tuples a été utilisée).

ALTER CUBE Vente  UPDATE DIMENSION [Catégorie].[Catégorie], DEFAULT_MEMBER = [MonNamedSet] 

La Bewise Day Conference c’est demain

La BDC 2011, c’est demain au Casino Barrière de Toulouse. Je vous rappelle que c’est l’événement technique de la région toulousaine, et la première date des MS Days.

Même si vous n’êtes pas inscrit, passez faire un tour (à l’accueil, dîtes à Léa ou Lucile que vous venez de la part de Jean-Pierre).

En avant-première (même si ça a été pas mal relayé), voici la modélisation de l’espace des stands.

La BDC 2011 au casino Barrière

Passez me voir du côté des stands SQL Server (Business Intelligence, SQL Server, SQL Azure, etc.).

Enfin, je publierai post-BDC les slides et le webcast de ma session sur Denali.

image

Au programme, SQL Always On (HADR), Contained Databases (CDB), BISM, Crescent, SSIS, etc.