Version DMV de sp_lock

paris-cadenas-amoureux-pont-des-arts-jcl

(c) photo jeanclaudedelafarge.fr

Un post rapide pour partager un script T-SQL qui me sert à connaitre les ressources lockées par un processus dans SQL Server. La version old school est l’utilisation de la procédure stockée système sp_lock.

 

Le problème, c’est qu’on ne peut pas faire de jointures avec d’autres tables systèmes, ni mettre de clause WHERE. Heureusement, il y a les DMV qui nous ramène la même chose, de façon un peu plus utilisable.

select
  request_mode, request_type, request_status,
  resource_type, resource_subtype, db_name(resource_database_id) as dbname,
  case
    when resource_type = 'OBJECT' then object_name(resource_associated_entity_id)
    when resource_type in ('KEY', 'PAGE', 'HOBT') then (
      select object_name(partitions.object_id) + '.'+isnull(i.name, 'HEAP')
      from sys.partitions
      inner join sys.indexes i
        on i.object_id = partitions.object_id
        and i.index_id = partitions.index_id
      where hobt_id = resource_associated_entity_id)
      ----> marche uniquement dans le contexte de la base concernée
    when resource_type in ('ALLOCATION_UNIT') then (
      select isnull(t.name, '--') + '.'+ isnull(i.name, 'HEAP')
      from sys.allocation_units au with (nolock)
      left join sys.partitions p with (nolock)
        on au.container_id = p.hobt_id
      left join sys.indexes i with (nolock)
        on i.object_id = p.object_id and i.index_id = p.index_id
      left join sys.tables t with (nolock)
        on t.object_id = i.object_id
      where allocation_unit_id = resource_associated_entity_id )
      ----> marche uniquement dans le contexte de la base concernée
    else cast(resource_associated_entity_id as sysname) end as resource_name,
  resource_description,
  session_id,
  original_login_name, last_request_start_time, login_time
from sys.dm_tran_locks
left join sys.dm_exec_sessions
  on dm_tran_locks.request_session_id = dm_exec_sessions.session_id
where dm_exec_sessions.session_id <> @@SPID

Vous n’avez plus qu’à ajouter les clauses where qui vont bien pour identifier vos locks. Le CASE WHEN est à améliorer, je l’ai fait à l’arrache pour mon besoin du jour.

Récupérer les N derniers jours en MDX

Quand on consulte un cube, on a souvent envie/besoin de visualiser une période glissante (ie. dynamique, calée sur la date du jour). En effet, ce n’est pas terrible, quand on ouvre un TCD, de devoir changer le filtre de dates pour le remettre sur le mois en cours (surtout quand on le consulte en ligne depuis SharePoint).

Pour cela, il faut prévoir des mesures calculées ou une bidouille dans votre dimension temps. Mais on n’a pas toujours la possibilité de faire une évolution dans le cube (ce n’est peut-être pas le notre après-tout).

Pour résoudre la problématique, on va utiliser les jeux nommés (Named Sets) et Excel qui permet d’injecter un peu de MDX.

Le code de base

Le code MDX dont nous avons besoin doit ramener le Set contenant les membres de la dimension temps. Voici le code :

{
  Tail(NonEmpty([Date].[Date].[Date], [Measures].[ma mesure]  ), 1).Item(0).Lag(90)
  :
  Tail(NonEmpty([Date].[Date].[Date], [Measures].[ma mesure] ), 1).Item(0)
}

En gros, on prend le dernier élément avec une valeur ; Item() ramène le membre.

Tail(NonEmpty([Date].[Date].[Date],  [Measures].[ma mesure]  ), 1).Item(0)

On se décale dans la dimension, ici de 90 jours

.Lag(90)

Et on construit le tout dans un intervalle : { <firstmember> : <lastmember> }

Et on mets ça où ?

Non. Ne répondez pas, je sais ce que vous avez en tête…

Dans le ruban d’un tableau croisé dynamique, il y un menu pour gérer les Named Sets. On choisit d’en créer un en MDX.

23

Il suffit de copier coller son MDX et il apparaître dans les « jeux » disponibles dans votre cube.1

Inconvénient

L’inconvénient, je suis sûr que vous l’avez déjà repéré. Le problème est que le code MDX est dépendant d’une mesure explicite, ie. on prend la dernière date où il y a une mesure. Si vos mesures ne sont pas sur le même tempo, vous pourrez avoir un décalage.

Disclaimer

Je n’ai pas la prétention de dire que c’est :

  • l’unique façon de faire cela
  • la façon la plus propre de faire cela

Donc si vous avez d’autres techniques, n’hésitez pas dans les commentaires.

(notamment la solution pour contourner l’inconvénient remonté)

 

 

 

 

Mon SQLSaturday Paris 2016

Traditionnellement, je vous livre mon programme idéal pour le prochain événement du GUSS (même si au final je cours partout comme un hamster en discutant avec le maximum de personnes possible).

Cette année encore, le programme est alléchant avec une belle brochette d’experts étrangers (sans oublier nos experts hexagonaux).

Mon choix de sessions, dans l’ordre de l’agenda, se porte sur :

  • Handling relationship in DAX par Marco Russo parce qu’une session avec le maestro, c’est toujours un Must Attend mais aussi parce qu’il y a toujours des petits tips à récupérer pour nos modèles Power BI
    • J’irai bien aussi voir la session de Ryan Yates sur le DSC SQL Server. Le Desired Configuration State, un épouvantail ou une réalité, je suis très curieux sur le sujet et ce speaker a une bonne renommée parait-il
    • Désolé Charly et Christophe, mais je ne peux pas liker TOUTES les sessions
  • My favorite pie (chart) par Markus Ehrenmueller-Jensen : un peu de préceptes Dataviz, c’est toujours bon à prendre
    • J’irai bien aussi voir Uwe Ricken, l’un des speakers les mieux noté l’an passé, qui décortique les entrailles des indexes Clustered
  • Pour ce créneau, je serai en session avec Fabien Adato sur Cortana Analytics (pardon, Cortana Intelligence). Mais je serai bien allé voir Chrissy Lemaire dont je n’ai entendu que des compliments après sa session Powershell de l’European Powershell Conference
  • REX : Velib & Cortana par Romain Casteres et Yassine Khelifi (oui, on a mis Emilie sur le planning pour attirer plus de monde 😏) : j’ai eu la chance de voir le travail des Microsoftees sur les données Velib (ndm: le service de location de vélo de Paris) et je pense que c’est le Best Of Breed des implémentations Cortana que j’ai vu.
  • Identity mapping and de-duplicating par Dejan Sarka : Dejan fait autorité sur ce sujet (et le Data Mining) depuis longtemps dans la communauté internationale. Et par expérience je sais que ce sujet est très complexe, en tout cas bien plus complexe que 3 clics dans DQS. Ses techniques et son expérience doivent être très intéressants.

Un beau programme, de quoi bien se remplir le cerveau de nouvelles idées et connaissances.

Sinon, plus sérieusement, pour ce SQLSaturday, je vais essayer de me mettre en mode « posey » au stand GUSS.

Premièrement parce qu’en tant qu’organisateur, c’est quasi impossible de suivre les sessions (déjà la mienne…).

Deuxièmement parce que j’adore passer du temps à échanger avec les participants (vous, les speakers, les sponsors) et que la salle sponsors et le stand GUSS reste le spot idéal pour cela. Cette année, nous allons demander aux speakers de passer un peu de temps au stand GUSS en tant qu’ATE (Ask-The-Expert) après leur session. Ce type d’échange est tout aussi enrichissant que la session elle-même (pour le speaker aussi).

TroDiscoveryDayisièmement, parce que je veux participer au Hackaton (ie. Discovery Day) que nous organisons pendant l’événement.

Un hackaton, chouette !

Alors, disons le tout de suite, Hackaton n’est pas le terme qu’il faudrait employer même si nous avons quelques ingrédients. Le PASS et Microsoft souhaitent nous faire plancher sur un problème Data à l’occasion de la sortie de SQL Server 2016. Le PASS fournit les données et la question, Microsoft fournir SQL Server (et R, Polybase, etc.).

Avec AZEO, See-d et le GUSS, nous allons nous associer à ce « hackaton » pour montrer que la communauté française sait relever le défi.

AZEO-150pxSee-d-150px

Ce Discovery Day sera l’occasion de faire de mini-démos et ateliers au stand GUSS pendant le SQLSaturday.

Tous les renseignements : http://guss.pro/2016/06/08/sql-server-2016-discovery-day-en-france/

Alors, vous venez ? Inscription au SQLSaturday par ici…

 

 

Ca buzz ou pas pour ce SQLSaturday ?

Je m’interroge avec les autres membres du Board du GUSS sur le manque de relaying du prochain SQLSaturday dans la blogosphère et autres réseaux sociaux. Certes, il y a quelques articles ici ou mais rien de vraiment « viral » comme nous le voyions il y a quelques années, au début des JSS.

J’ai 2 théories.

Au passage : vous êtes inscrits au SQLSaturday ?

De mauvais média pour la veille ?

Nous (le GUSS) broadcastons sur quasiment tous les réseaux sociaux : Twitter, Facebook, LinkedIn, RSS, Youtube, Newsletter et même maintenant Meetup.

Et pourtant, j’entends encore « ah bon, vous faites un événement dans 2 semaines ? »

twitterDonc soit nous n’avons pas le bon canal, soit les gens ne les suivent pas. Prenons Twitter par exemple. C’est un media simple et efficace pour se tenir à jour de l’actualité d’un sujet. Vous trouvez les bonnes personnes ou comptes officiels à suivre et vous avez en quelques coups de molette les choses à savoir sur SQL Server, Power BI, Azure, etc. (mais ça marche aussi pour le rugby, les fromages au lait cru et Phil Barney).

Suivre l’actualité est devenu INDISPENSABLE pour un consultant aujourd’hui. Oui, je pèse mes mots, car tous les jours je vois que ça fait la différence au niveau du recrutement. En tant que communauté, nous créons des moments d’échange, d’apprentissage et de connexion à l’actualité au travers des Journées SQL Server, des SQLSaturday, des afterworks. Donc nous suivre, c’est indirectement se tenir à jour du monde de la Data Microsoft.

Certes, ça ne répond pas la question initiale mais s’il y avait plus de retweet, like et autre share, peut-être aurait-on un meilleur niveau de veille des professionnels français qui constituent notre écosystème. (je parle bien de l’écosystème français car je trouve que nos voisins sont beaucoup plus impliqués et réactifs sur les réseaux)

Et vous, vous faites comment votre veille ?

Le syndrome « tête dans le guidon »

o-WORKAHOLIC-facebookVoyons maintenant une autre théorie qui me semble très plausible (puisque j’en suis un des exemples).

Disons le tout net, notre marché va bien et même très bien. Je ne parle pas de l’IT en général mais bien du marché de la Data et d’autant plus celui de spécialistes comme Azeo.

Beaucoup de projets, beaucoup de challenge, beaucoup de transformations, beaucoup de prise de conscience de dette technique, etc. Cela nous occupe tous et parfois même à 110%.

Alors je peux comprendre qu’on ait moins de temps pour s’intéresser à ces choses communautaires qui semblent tellement à la marge. Et pourtant c’est dans ces moments là qu’il faut savoir lever la tête régulièrement, même brièvement, pour garder le cap, regarder l’écosystème qui nous entoure, ne pas se laisser distancer, …et surtout ne pas taper le mur en face.

Réflexion philosophique ?

Finalement, je m’aperçois au fil de ce billet que j’ai fait une projection du manque de relaying vers le manque d’écoute (ou de considération) de l’actualité communautaire.

Peut-être que je me trompe totalement. Peut-être que ce genre d’événement ne plait plus ? Ou peut-être qu’il est entré dans une sorte de routine ? Je n’espère pas car ce serait dommage d’arrêter tout cela. Ou pas.

Bref, c’est ma réflexion philosophique du lundi mardi matin ☺

Retrospective communautaire des 4 derniers mois

— suite du billet « SharePoint Saturday, ma prochaine conférence » —

Ok, vous avez compris, les 27 et 28 mai, ce sera le SharePoint Saturday 2016 à Montparnasse. Mais depuis les Journées SQL Server en décembre dernier, que s’est-il passé?

Dans l’ordre j’ai pris part (en tant qu’organisateur ou speaker) à…

Meet-The-DBA avec les DBAs de Criteo

C’est un nouveau format qu’on a voulu tester au GUSS :

se faire rencontrer la communauté et des DBAs qui veulent expliquer leur façon de travailler.

Un échange entre professionnels qui ont un peu de poil au menton en somme. Cela faisait un moment que j’échangais avec Criteo pour mettre cela en place. Et comme annoncé aux JSS, on l’a fait en janvier.

WP_20160113_19_42_10_Pro_LI

Au final, de belles discussions avec environ 25 participants, DBAs eux-mêmes. Et pour finir, un généreux Afterwork offert par Criteo.

Voir la présentation Scale SQL for the Web de Criteo

 

Podcast : Rise of Analytics

Aurélien Prévot de la communauté aOS est un professionnel du podcast et nous a proposé (au GUSS) d’en organiser. Quand je dis professionnel, c’est-à-dire qu’il arrive avec 2 caisses de matos, une table de mixage, des micros pro, etc.

Donc fin janvier, on a enregistré un petit débat pour parler des algorithmes, de l’intelligence artificielle, etc.

GUSS-Rise-of-analytics-large

J’avais amorcé l’idée lors de la 1ere keynote des JSS en avançant que l’enjeu de demain ce sont les algorithmes. La capacité à trouver le bon modèle, le bon algo, c’est ça le réel enjeu de l’Analytics et autre Big Data (grrr, je déteste ce mot mais il porte tellement de sens aujourd’hui…).

Alors l’idée était d’en parler avec quelques confrères, en mode plus relâché car le pitch de départ est « est ce que Skynet (Terminator) c’est demain ? »

Ce podcast m’a permis de faire de belles rencontres et notamment Emmanuel Frenod, directeur scientifique de See’d et qui a fait le déplacement depuis Vannes pour participer.

Ecouter le podcast

 

European PASS Influencers meeting

C’est quoi ça ? L’amicale des gais boulistes de Castelnau ?

Régulièrement, on essaie de se voir avec nos homologues à travers le monde pour discuter de la communauté (la fameuse #SQLFamily). On échange sur ce qu’on réalise dans nos pays respectifs, on se donne des idées, on partage nos doutes et nos échecs.

Là, ce sont mes confrères allemands qui recevaient dans le cadre de leur SQLKonferenz (l’équivalent des JSS, vraiment top leur organisation et leurs conférences). Il y avait là la communauté allemande en force avec Oliver, Tillman, Kostja, et leurs troupes, Niko qui représentait le Portugal, Gerhard qui représentait l’Autriche, moi la France. Et nous avons même eu la directrice marketing du PASS, Georgia Dhale, qui est venue tout spécialement de Vancouver.

Pour vous révéler une indiscrétion, c’est dans ce genre de meeting que je puise ma motivation. Ca me booste pour une saison entière de GUSS🙂

SQLSaturday Vienna

Les voyages forment la jeunesse, ou plutôt la #SQLFamily. Lors du dernier PASS Summit, j’ai eu la chance de rencontrer Markus et Wolfgang de la communauté autrichienne. J’ai donc postulé pour être speaker lors de leur SQLSaturday.

WP_20160401_13_39_58_Pro_LIavant – après

Une belle conférence avec beaucoup de présents et des guests : Brent Ozar, JRJ, Matt Masson… Là bas, j’ai parlé de mon sujet fétiche: La Self-Service BI et la gouvernance qui l’entoure.

sqlsatvienna

En plus, j’ai eu la chance que les tableaux de bord d’usage de Power BI soient sortis la veille donc j’ai pu faire une petite démo.

 

Ask-The-Experts : Rencontre avec Microsoft CSS

Pareil, un nouveau format qu’on voulait tester au GUSS.

Se faire rencontrer des « clients » et les personnes du support Microsoft.

Pas de présentation mais des discussions, des questions, des anecdotes et aussi quelques indiscrétions permettant de mieux comprendre les produits Microsoft qu’on ne peut avoir qu’en discutant avec ces hommes de l’ombre.

Merci à Nicolas Soukoff et Mathias Ekizian pour avoir mobilisé Véronique Mery et son équipe pour cet événement.

C’est le premier d’une série et on espère qu’il attirera plus de monde la prochaine fois (que ce soit pour venir rencontrer le support MS ou trinquer aux frais du GUSS 😏).

WP_20160414_19_47_28_Pro (1)

 

Global Azure Bootcamp 2016

Enfin, samedi dernier (le 16 avril), j’ai eu la chance d’être speaker au 3eme Global Azure Bootcamp. On pourrait dire que le GAB est une sorte de Azure Saturday. Mais la particularité, c’est que le même événement se déroule le même jour partout dans le monde.

870648066377693

J’ai présenté avec mon collègue Fabien Adato une session sur Cortana Analytics et les nouvelles architectures de Data Platform. La session ne durait que 45 minutes alors nous n’avons couvert qu’un petit périmètre des solutions disponibles (Azure Machine Learning, HDInsight, Azure Data Lake, Azure Data Factory).

cortana

Cet événement m’a permis (à moi et au GUSS) de me rapprocher de la communauté AZUGFR et d’aller leur montrer que le monde de la Data, ce n’est pas juste cliquer sur New dans le portail Azure (j’exagère évidemment 😏).

Plus sérieusement, c’était un bel événement avec une communauté curieuse et dynamique. Merci AZUGFR

Voir la présentation

Pour finir…

Chargé ce premier tiers de l’année… Et ce n’est pas fini car le SQLSaturday Paris 2016 arrive !

Et sinon, si vous vous posiez la question, je travaille un peu quand même🙂. Le reste du temps, quand je ne suis pas à un événement, je fais du conseil et des projets chez mes clients avec mon équipe.
D’ailleurs, je cherche un spécialiste Power BI en ce moment mais j’en parlerai dans un autre post.

SharePoint Saturday, ma prochaine conférence

J’ai l’impression de ne pas avoir lever le nez du guidon depuis les dernières Journées SQL Server (d’ailleurs il faudra un jour songer à changer le nom vu qu’on y parle aussi Azure, Big Data ou encore Power BI).

Pour les impatients qui lisent en diagonale, ma prochaine conférence est dans le cadre du SharePoint Saturday.

SharePoint Saturday Paris 2016
Samedi 28 mai
Tour Montparnasse, Paris

 

Le SharePoint Saturday, c’est comme le SQLSaturday mais avec les technologies SharePoint et son écosystème. Elle est organisée par la (les) très dynamique(s) communauté(s) autour de SharePoint, Office 365, azure, etc. (SPS, aOS & co).

aos

Quel rapport avec la Data ? On a en commun que la BI trouve souvent sa place dans un « portail collaboratif » et que la démarche de Self-Service BI est fortement connexe à celle du Digital Worplace (et globalement de la transformation numérique des entreprises).

Et moi dans tout ça ? J’ai la chance d’avoir été retenu pour parler de Power BI, mais pas dans un format habituel de session. Je vais délivrer une préconférence.

Une journée avec Power BI
Vendredi 27 mai

Je vais détailler ici ce qu’est une préconférence même si je l’ai déjà fait sur ce blog. Après tout, vous êtes peut-être tombé ici par hasard.

Donc la préconférence, c’est un format que l’on retrouve énormément lors des conférences internationales. C’est à mi-chemin entre la formation traditionnelle et une conférence. Là où un speaker va résumer son sujet en une session d’une heure, dans une préconf, il va passer la journée avec vous à le détailler. En plus, généralement, vous pouvez venir avec votre laptop et manipuler en même temps.

Un préconférence, ce n’est pas gratuit (oui, c’est payant !). Mais pour env. 150€ repas compris, vous avez accès à des experts à un prix que seule la communauté peut vous apporter (comparez!)

Au SharePoint Saturday, je passerai donc la journée avec vous à faire le tour de Power BI en construisant un tableau de bord de A à Z.

Je serai accompagné de Jean-Pierre Girardot, formateur, auteur et expert de Power BI. A nous deux, nous pourrons mieux vous accompagner dans un vrai en mode workshop.

jp-carré

Et le lendemain (le samedi, pour la conférence gratuite), je traînerai sur place pour filer un coup de main, voir les copains, écouter Jeff Tepper en Keynote, discuter avec les sponsors, bref, cultiver mon réseau.

Je vous invite donc à vous inscrire et venir rencontrer la communauté.

Inscrivez vous au SharePoint Saturday
Inscrivez-vous aux préconf. du SPS

spsparis

Mais alors, qu’ai-je fait depuis décembre dernier ? La suite dans le prochain billet…

 

Comment la recherche Fulltext voit votre saisie

Une fonction système bien utile pour comprendre comment la recherche Full-Text (FTS) interprète votre saisie.
En effet, entre le Word Breaker qui découpe votre saisie, le Stemmer qui la comprend grammaticalement (de façon très simplifiée quand même), les Noise Words (STOPLIST) et le Thésaurus, on a souvent du mal à expliquer le résultat de la recherche [aux utilisateurs].

Afin d’aider, SQL Server dispose d’une fonction qui vous donne quelques pistes : sys.dm_fts_parser

select *
from sys.dm_fts_parser
('"je suis content d''aller au prochain after-work du GUSS"', 1033, 0, 0)

FullText

 

Documentationhttps://msdn.microsoft.com/en-us/library/cc280463.aspx