L’annonce : http://www.zdnet.com/blog/microsoft/microsofts-sql-server-2012-to-launch-on-march-7/11718

Petite astuce aujourd’hui, si vous utilisez des requêtes Like et que vous avez un underscore dans le terme recherché.

Mettre un undescore dans une recherche signifie :

“Toutes chaines comportant à cet endroit là, n’importe quel caractères”

Ce qui donne :

image

Notez que j’ai toutes les lignes contenant 79 “quelque chose” (79_3 mais aussi 790_2, 791_2 etc….)

Hors dans mon cas, je souhaite que mon “_” soit pris non pas comme un caractère spécial, mais comme un un “simple” caractère.

A ce moment là, remplacez le “_” par “[_]” Sourire

image

Et voilà je n’ai plus que 4 lignes !

Autre méthode : Utilisez le mot clé ESCAPE qui va spécifier que le caractère après celui désigné comme ESCAPE, ne doit pas être pris en compte comme un caractère spécial :

image

Et voilou,

/LIKE ! Sourire

Bonjour à tous;

Les journées SQL SERVER 2012, qui ont eu lieu dans les locaux de Microsoft à PARIS, sont terminés et l’ensemble des webcasts des sessions sont en ligne.

Malheureusement, comme dans tout monde non parfait, les webcasts n’ont pas TOUS été bien catégorisés sur le site ShowCase Microsoft. Ok, Evidemment la mienne est perdue dans une catégorie où elle n’a rien à faire bien sûr Triste

Bref…

Si vous voulez voir TOUTES les vidéos de la journée SQL SERVER, le mieux est de directement faire une recherche sur les mots clé “Journées Sql Server”.

Voici le lien direct de l’ensemble des vidéos : http://www.microsoft.com/fr-fr/showcase/Search.aspx?phrase=journ%c3%a9es+sql+server

Voici le lien direct de ma vidéo : http://www.microsoft.com/fr-fr/showcase/details.aspx?uuid=9a331e1f-4ab8-4e6d-82e6-2790debac36e

Et pour les pressés, la vidéo directement Sourire :


 

Voilà bon visionnage !!

Les inscriptions sont ouvertes aux Journées SQL Server 2012 (édition 2011, ok je vous l’accorde !)

clip_image002

Rejoignez la communauté des professionnels SQL Server !

clip_image006Les experts francophones de SQL Server, les MVP (Most Valuable Professionnal) et les MCM (Microsoft Certified Master) se réunissent à Paris pour 2 jours de conférences entièrement gratuits.

Vous pourrez découvrir les nouvelles fonctionnalités de SQL Server 2012 mais aussi assister à des sessions sur des sujets pointus au travers d’un parcours consacré au moteur de base de données, d’un autre consacré à la Business Intelligence et enfin un parcours dédié aux appliances SQL Server.

Au total, ce ne sont pas moins de 23 sessions qui vous attendent sur AlwaysOn, Power View, SSIS Server, les index colonnes, SQL Server Data Tools, SQL Azure, BISM, les performances, la sécurité, etc.

Inscrivez-vous dès maintenant

Cet événement est organisé par la communauté SQL : le groupe des utilisateurs francophones (GUSS) et les MVP, avec l’appui et la participation de Microsoft et du sponsor Platinum : HP

image clip_image008 clip_image010

Tout au long des journées, vous pourrez également poser toutes vos questions à l’espace rencontre à nos différents sponsors éditeurs, presse ou SSII. Les speakers sont également à votre disposition.

Cet événement aura lieu les

12 et 13 décembre
au
Centre de conférences Microsoft

41 quai du Président Roosevelt
Issy-les-Moulineaux

clip_image012

GUSS est affilié au PASS (Professional Association for SQL Server), leader des communautés SQL Server à travers le monde. Nous les remercions pour leur soutien dans l’organisation de cet événement.

J’ai récemment eu un exercice à effectuer sur la machine d’un collègue

“J’ai un backup, mais je n’ai que visual studio installé, pas de Sql Server Management Studio ni rien et faut restorer la base de données”

Ok, donc :

  1. Pas de SSMS c’est noté
  2. Obligation de faire un MOVE des fichiers du backup
  3. Pas de connaissance des fichiers logiques contenus dans le backup

Pour lancer la restauration, il me faut pouvoir exécuter du script SQL. Je décide donc de partir sur du SqlCMD

Il me faut connaitre la liste des fichiers à restaurer contenus dans le backup :

   1: restore filelistonly  from disk = 'C:\tmp\AdventureWorks2008R2.bak'

Ce qui donne en sqlcmd Smile

sqlcmd

Bien maintenant que j’ai récupéré les fichiers logiques, y’a plus qu’à éxécuter la phase de restauration:

   1: RESTORE DATABASE [AdventureWorks2008R2] 

   2:     FROM  DISK = N'C:\Tmp\AdventureWorks2008R2.bak' WITH  FILE = 1,  

   3:     MOVE N'AdventureWorks2008R2_Data' TO N'C:\DATA\AdventureWorks2008R2_Data.mdf',  

   4:     MOVE N'AdventureWorks2008R2_Log' TO N'C:\DATA\AdventureWorks2008R2_Log.ldf',  

   5:     MOVE N'FileStreamDocuments2008R2' TO N'C:\DATA\Documents2008R2'

   6: GO

Et ce qui donne en SQL CMD :

image

Et voilà une base restaurée convenablement Smile

Il existe pas mal d’articles sur le nouveau type CLR HierarchyID. Voici quelques pointeurs d’ailleurs :

Par contre, il y a peu d’informations sur la façon de faire pour migrer une table contenant par exemple un Identifiant et son parent (EmployeeID et ManagerID) vers une table supportant un type HierarchyID.

J’ai trouvé quelques essais, qui se sont trouvés être … faux (c’est balot !!)

Le principe finalement, c’est de “construire” Le hierarchyID à partir des données de la table d’origine.

On va éviter de passer par des curseurs, trop lent, et on va utiliser 2 choses:

  1. Le Row_Number() qui va nous être utile pour numéroter chaque filleul d’un manager : Supposons que j’ai un manager avec 4 filleuls, je veux que chaque filleul soit noté de 1 à 4
  2. Deux CTE : la première va nous permettre de faire le calcul précédent. La deuxième va créer le hierarchyID pour chaque employé (recursivement) grace aux informations de la première Smile

Du coup on est capable de générer un hierarchyID (correct cette fois ci Smile with tongue out) avec … une seule requete :

   1: USE AdventureWorks

   2:  

   3: -- Construction d'une table temporarire permettant de 

   4: -- connaitre le numéro de chaque enfant d'un manager

   5: -- Pour un managerID = 3, on voit qu'il y a 7 enfants par exemple, 

   6: -- numéroté de 1 à 7

   7: WITH employees (EmployeeID, ManagerID, Num) AS

   8: (

   9:     SELECT 

  10:         EmployeeID, 

  11:         ManagerID,

  12:         ROW_NUMBER() OVER 

  13:             (PARTITION BY ManagerID ORDER BY ManagerID) 

  14:     FROM HumanResources.Employee

  15: ), 

  16: hierarchies(orgnode, EmployeeID) 

  17: AS (

  18:     -- Récupération des managers de plus haut 

  19:     -- niveau (managerId == null)

  20:     SELECT hierarchyid::GetRoot() AS OrgNode, EmployeeID 

  21:     FROM employees AS C 

  22:     WHERE ManagerID IS NULL 

  23:     UNION ALL 

  24:     -- Récursivité sur l'ensemble des filleuls

  25:     SELECT 

  26:     -- Construction du hierarchyId

  27:     -- On est au niveau inférieur, donc :

  28:     -- Concaténation du orgnode du parent 

  29:     -- + numéro de l'enfant actuel

  30:     CAST(p.orgnode.ToString() + 

  31:     CAST(C.Num AS varchar(30)) + '/' AS hierarchyid), 

  32:     C.EmployeeID

  33:     FROM employees AS C 

  34:     JOIN hierarchies AS p ON C.ManagerID = P.EmployeeID 

  35: )

  36: -- Le select pour vérifier le résultat

  37: -- qui pourrait servir à faire un insert ou update

  38: -- de la table de destination

  39: SELECT orgnode.ToString(), * FROM hierarchies

Il y’a déjà pas mal de développeurs (moi le premier) qui se sont empressés de commencer à développer en WinRT des applications Metro destinés à Windows 8

Pour certains, don’t je fais parti, l’utilisation du pattern MVVM est un plus, une philosophie, une habitude, bref un “must have coding pattern” Smile

Pour faire du MVVM, j’utilise suivant les projets soit PRISM soit MVVM light Toolkit

En WinRT, aucun portage n’a encore était réalisé de ces 2 frameworks.

Je vous propose donc en téléchargement une version de MVVM Light, migrée vers vers WIN RT, utilisable en C#

Vous pouvez le télécharger ici : http://www.dotmim.com/SiteFiles/GalaSoft.MvvmLight.zip

MvvmLightWinRT

Biensur je vous recommande de surveiller le portage qui sera suremment développé par Laurent Bugnon, auteur et créateur de MVVM Light.

image

En attendant cette nouvelle version, celle ci pourra toujours vous servir

(Note : Code fournit “AS IS”, sans AUCUNE garantie !!! Smile)

Dans la série des Posts “Comparons WPF, Silverlight et WinRT” :

Une différence de technique pour télécharger un élément (nous prendrons ici une image par exemple)

Dans le cas de WP7, nous utliserons la classe WebClient, et l’appellerons de manière asynchrone (on a pas le choix) et du coté WinRT, on utilisera le nouveau mot clé “async” et “wait”

WP7 :

public void GetImage(Uri url)
{
    var webClient = new WebClient();

    webClient.OpenReadCompleted += WebClientOpenReadCompleted;
    webClient.OpenReadAsync(url);
}

void WebClientOpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    if (e.Error != null)
        return;

    BitmapImage bi = new BitmapImage();
    bi.SetSource(e.Result);

    image1.Source = bi;
}

WinRT :

public async void GetImage(Uri url)
{
    HttpClient client = new HttpClient();
    HttpResponseMessage response = await client.GetAsync(url);
    byte[] img = response.Content.ReadAsByteArray();
    InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream();
 
    DataWriter writer = new DataWriter(stream.GetOutputStreamAt(0));
    writer.WriteBytes(img);
 
    await writer.StoreAsync();
 
    BitmapImage bi = new BitmapImage();
    bi.SetSource(randomAccessStream);

    image1.Source = bi;
}

Autant je trouve sexy l’utilisation des nouvelles directives d’asynchronisme, autant l’utilisation de IMemoryRandomAccessStream et d’un DataWriter, ben… bof hein Smile

Bon Downloading !

Dans la série des Posts “Comparons WPF, Silverlight et WinRT” :

Si vous devez déclarer des namespaces en WinRT, sachez que la syntaxe change (heuresement que Visual Studio aide !)

WPF :

xmlns:conv= »clr-namespace:TimeTrack.Converters »
xmlns:mess= »clr-namespace:Bewise.Phone;assembly=Bewise.Phone »

WinRT :

xmlns:conv= »using:TimeTrack.Converters »
xmlns:mess= »using:Bewise.Phone »

Deux remarques:

  1. Remplacement de clr-namespace par using
  2. Plus d’obligation d’utiliser le nom de l’assembly si vous référencez un namespace provenant d’une autre assembly

To be continued ! Smile

Si vous faites du MVVM, et que vous tentez une migration vers WinRT, attention à l’implémentation de INotifyPropertyChanged

La subtilité vient de l’apparition de cette interface dans un autre namespace, lié à l’UI :

Windows.UI.Xaml.Data.INotifyPropertyChanged

D’ailleurs, on le remarque vite, lors de l’ajout du using :

image

Si vous migrez du code, et que votre INotifyPropertyChanged est encore celui de System.ComponentModel, et bien aucun de vos contrôles XAML ne s’abonnera à cet évènement de votre ViewModel !

Keep The Fight ! Smile