Mim

Select * from Seb where Sujets in (SQL Server 2008, ADO.NET, Visual Studio 2008)
Fx 3.5 sp1 beta et Sync Services for ADO.Net

Je viens d'installer le SP1 du Framework 3.5 ainsi que le SP1 de Visual Studio 2008.

Il est clair qu'il y a beaucoup de nouveautés trés excitantes dans le SP1.

Support de l'intellisense poussé de Javascript, Support d'Entity Framework, Astoria, AJAX History, amélioration des perfs de Visual Studio 2008 etc  ...

Mais aussi plus proche de SQL Server 2008, le support de celui dans Visual Studio 2008 (ENFIN !!)

Et bien sachez que je viens de découvrir une nouveauté peu relayée du SP1.

Une mise à jour du Designer de Sync Services qui supporte non seulement SQL Server 2008, mais aussi une des features de celui ci : Le Change Tracking !

LocalDatabaseCacheDesigner01

Notez le petite case à cocher : "User Sql Server Change Tracking"

J'avais déjà auparavant fais du change tracking avec SQL Server 2008 et Sync Services (cf ma démo au Tech Days 2008) mais l'avoir intégré nativement dans le designer, je trouve ça juste ... cool !

Bon là il est un peu tard, mais promis je vais fous faire un petit article sur le Change Tracking et Sync Services, qui sont "ON NE PEUT PLUS" complémentaire l'un et l'autre !

Restez à l'écoute, je me sens d'humeur inspirée !!!

LinqPad

Bonjour à tous,

linqpadlogo

Je viens de découvrir un tool absolument "Must Have" pour tout bon développeur qui se respecte : LinqPad

Cet utilitaire est grosso-modo un Notepad Pour Linq.

J'adore !

Vous lancez et vous faites du LINQ :

image

J'ai trouvé tout de suite, un cas d'utilisation direct de cet outil.
Je veux faire du Linq To Sql dans une base de donnée, vite fait pour voir le contenu de la table Client.

Et bien avec LinqPad, pas besoin de créer un projet VS.Net, de créer un DataContext, une classe console, ou une winforms, blah blah blah ...

Je lance juste LinqPad, je me connecte à ma base de donnée (si ça n'a pas été déjà fait dans une session antérieure) et j'interroge directement ma table client... en LINQ !

En plus vous trouverez plein d'exemples, que ce soit LINQ simple ou LINQ to SQL ou encore LINQ To XML.

Enormissime !

Chapitre III : Sync. Services for ADO.NET et WCF
Je viens de publier un nouvel article sur le site TechHeadBrothers, suite de mes péripéties avec Sync. Services for ADO.NET

Au menu de ce nouvel opus, la synchronisation multi-tiers :)

Le principe ici étant d'exposer, non pas son serveur SQL SERVER 2005, mais plutôt un service WCF, mettant à disposition les données à synchroniser.

Je vous rappelle au passage aussi les deux premiers articles de cette série

Bonne synchro à tous !

Edit : Tiens je viens de trouver un super en article en français de Redo sur Sync Framework. Une bonne lecture de plus pour se familiariser sur cette techno. Hop c'est par ici : Sync Framework par Redo sur asp-php.net

Installation SQL Server 2008 et Windows Server 2008

Il existe un "bug d'installation" lors d'une tentative d'installation de SQL Server 2008, suivi d'une installation de SQL Server 2005 sur un Windows Server 2008.

L'installation de SQL Server 2005 échoue dans quelques cas.

Voici les patchs correctifs. A installer aprés l'installation de SQL Server 2008, mais avant SQL Server 2005 :

Bon je vous l'accorde ce cas de configuration est assez rare, mais j'étais en plein dedans :)

SQL SERVER : Les versions et services pack

Juste une petite astuce lorsque vous voulez vérifier si votre Serveur SQL SERVER 2005 est bien à jour, au niveau service pack :)

Pour vérifier la version installée, exécuter le script suivant :

SELECT SERVERPROPERTY('productversion') as 'Version SQL SERVER', SERVERPROPERTY ('productlevel') as 'Service Pack appliqué', SERVERPROPERTY ('edition') as 'Edition'

Résultat attendu :

SQL_versions

Note : le numéro de version (colonne 1) peut varier suivant les HotFix appliqué sur l’Instance SQL SERVER 2005. La donnée essentielle étant la deuxième colonne « Service Pack appliqué »

Pour information, les versions des bases de données SQL sont (sans prendre en compte les hotfixs)

SQL SERVER VERSION
SQL 2005 9.00.1399.06
SQL 2005 SP1 9.00.2047.00
SQL 2005 SP2 9.00.3043.00
SQL 2008 CTP3 10.0.1019.17
SQL 2008 CTP4 10.0.1049.14
SQL 2008 CTP5 10.0.1075.23
SQL 2008 CTP6

10.0.1300.13

Informations reprises du blog de Patrick Guimonet

Vous aurez donc noté que chez moi, la version 9.0.3054 diffère de la version SP2 "classique" 9.0.3043, car j'ai appliqué des hot fixes.

Bon Select à tous !

SQL SERVER et SSIS. Instance nommée

Il se peut que vous ayez installé sur votre serveur de développement, comme moi, plusieurs instances de SQL SERVER.

Du coup, vous vous retrouvez avec plusieurs instances nommées.

Dans mon cas par exemple j'ai cette architecture :

  1. Sql Server 2005 : (local)\sql2005
  2. Sql Server Express : (local)\sqlexpress
  3. Sql Server 20008 CTP6 : (local)\sql2008

Vous noterez que je n'ai pas d'instance par défaut.

J'ai eu un problème récessemnt lorsque j'ai essayé d'accès à SSIS via la console Management.

En effet, lors de la tentative de connexion à mon serveur SSIS, j'ai eu une vieille erreur pas belle qui me dit que je n'ai pas le droit d'ouvrir mon package SSIS parce que le serveur n'est pas accessible.. bla .. bla ... bla

Tout ça parce qu'un fichier de mapping a la bonne idée d'indiquer que mon instance 2005 est l'instance par défaut (rhooo).

Le fichier au doux nom de MsDtsSrvr.ini.xml est placé ici chez moi : MsDtsSrvr

Il suffit de l'ouvrir et de remplacer (voir compléter) la ligne de mapping :

SSIS_Xml_Config

Et voilà !

Attention : Pensez à redémarrer votre service SSIS !

RestartSSIS

Happy Connexion !

Astuce : two digit year cutoff

Comment SQL SERVER inteprète t'il ce genre de syntaxe : 14/02/99 ?
Biensur on va dire le 14 février 1999

Mais comment interprète t'on ceci :14/02/02
Biensur on va dire le 14 février 2002

Oui mais pourquoi SQL SERVER a t'il interprété la première date en 1900 et quelque et la deuxième en 2000 et quelques ?

Eh bien tout simplement, SQL SERVER est paramétré pour utiliser ce qu'on appelle une date de coupure. la date de coupure étant 49.

Aprés 49, SQL SERVER interprète les dates en 1950 et plus.
Avant 49, SQL SERVER interprète 2049 et moins.

Ces deux digits sont biensur paramétrable dans SQL SERVER. Propriétés du serveur, onglet Avancé :

twoyearcutoff
options advanced d'un serveur 2005

Et, comme 99 % des choses accessibles via la console management, vous pouvez faire la même chose en T SQL :

EXEC sys.sp_configure N'show advanced options', N'1'  RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'two digit year cutoff', N'2049'
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'show advanced options', N'0'  RECONFIGURE WITH OVERRIDE
GO

Et voilà, un paramètre éclairci :)

BDC 2008 J-1 !

Les préparatifs s'activent ! (Enfin j'espère)

Les répétitions s'enchainent ! (Enfin, ça commence ;))

Les démos sont prêtes ! (Enfin, celles des autres... je crois...)

Les slides défilent ! (Enfin, ceux qui sont faits ...)

Rendez vous demain pour la Bewise Developer Conference !

Un petit avant gout de la session Sql Server 2008 animé par Philippe Lonvaud, Julien Duprat et moi même :

PreviewBDC 

A demain !

Bewise.fr passe sous MOSS

Souvent mes clients me demandent les possibilités de customisation des solutions MOSS ou WSS.
Ils sont pour la plupart convaincu de la puissance de l'outil, en terme de fonctionnalités, d'ouverture et de prise en main. Un excellent Intranet, pour ne citer que ça.

Mais pour la question du Site Web Front, un véritable Site Internet sous MOSS, quel est le niveau de "relooking" de la bête ?

Et bien aujourd'hui, je peux enfin leur faire une démonstration du POC du site Bewise.fr
Il a été entièrement réalisé sur la base de MOSS, et customisé à l'extrème, de sorte que l'on ne puisse pas dire "Tiens, un site MOSS !!"

Un excellent travail de notre "Master of CSS", Jocelyn Tricoire, et de notre expatrié local Marseillais à nous, Lionel Limozin expert MOSS

BewiseSousMoss
Cliquez pour agrandir l'image
ou rendez vous direct sur le site
Bewise

MVP SQL SERVER

Et voilà j'ai reçu ma nomination MVP SQL juste à l'instant !

Bon là tout de suite, j'ai pas grand chose à dire, si ce n'est que ça me fait super plaisir :)

Et oui, je guettais depuis ce matin l'arrivée du mail. Je vais même pas essayer de faire "genre ça me touche pas" parce que j'ai bien du faire péter ma touche F5 "Refresh" sur mon Outlook :))

Bon je vais féter ça dignement et sereinement ce soir, promis !

J'ai même déjà mon profil MVP en ligne

Allez la petite note "Je M'La Pete Touch" :p

MVP

Les web casts TechDays 2008 dispos !

Les web casts TechDays 2008 sont enfin disponible !

Pour mes sessions, Sync Services et SQL Server 2008 FileStream, voici les liens directs :

Bon visionnage :) Hésitez pas à faire des retours !

BDC 2008

 

Cette année encore, Bewise organise à Toulouse LA conférence technique de référence sur les produits de développement autour de .NET : La BDC 2008.
Au menu :

  • Visual Studio 2008
  • Sql Server 2008 (ça c'est moi inside avec Jeane Pierre et Julien !)
  • Nouveautés C# 3
  • Compact Framework
  • WPF
  • WCF
  • Silverlight
  • XNA
  • ....

Si vous avez loupé les TechDays 2008, et même si vous y étiez d'ailleurs, ne ratez pas la BDC 2008 ! You Must Be Here !

Pour vous inscrire c'est par ici:

http://www.bewise.fr/BDC2008/?f=d50886ea-9d61-4544-9ffc-481d90f79933

 

 

Sql Server 2008 : Filter Index

Aujourd'hui, une nouveauté de la dernière CTP (6) de Sql Server 2008:

La possibilité de créer des index filtrés.

Alors "késako" des index filtrés ?? Eh bien c'est tout simplement, la possibilité de dire à un index de n'indexer qu'une partie de ses données !

Un exemple (enfin deux) valant souvent plus qu'une longue explication :

Première Exemple :

Supposons qu'une table de Client comporte un champ fixe de 5 charactères (Char(5)) contenant le code postal de la ville où il réside.
Supposons encore que l'entreprise qui utilise votre logiciel ne désire travailler que sur les clients dans le code postal est compris entre 30000 et 33000 (pourquoi pas !), bien que la base de données contiennent un ensemble de clients de la france entière :

Eh bien vous pouvez tout simplement créer un index filtré sur la colonne CodePostal, en indiquant que seul les code postaux entre les bornes 30000 et 33000 seront indexés !

La preuve en exemple et en image. Remarquez au passage le lifting de l'interface de création d'un index :

Etape 1 : Je crée mon Index :
Etape1

Etape 2 : Je donne un critère de filtre à mon Index (entre 30000 et 33000)
Etape2

Et voilà c'est fini :)

Comment vérifier que mon index fonctionne ? En essayant d'interroger mon index via une requète qui le fait intervenir.

Un truc du genre (simplissime)

Select * from Client Where CodePostal = '31100'

Voilà ce que donne le plan d'exécution :

Etape3

On voit bien que notre nouvel index est directement attaqué (Seek)
Il est effectué un Key Lookup sur notre index pour récupérer l'ensemble des colonnes.

(Tiens, au passage : Question subsidiaire : Comment éviter le Key Lookup en minimisant l'impact sur votre base de données ? Réponse dans 1 ou 2 jours si j'ai des tentatives de réponses :))

On continue notre test en modifiant le critère du codepostal en le passant "hors index filtré" :

Un truc du genre (toujours aussi simplissime)

Select * from Client Where CodePostal = '21100'

Le résultat en image :

Etape4

On voit bien que notre index n'est pas utilisé et que le moteur SQL a scaner l'index cluster (oh mon dieu .. :))

Deuxième exemple :

Un intéret majeur découle de l'utilisation de ce genre d'index filtré : La possibilité de définir l'unicité d'une colonne MAIS en autorisant AUSSI la colonne a être nulle :)

Supposons ma table de client comporte un numéro de sécurité sociale. Il est impératif que ce numéro de sécurité sociale soit unique, si et seulement si il est connu de l'entreprise.

Avant, les solutions existaient mais pouvaient paraître compliquées (Merci Jean Pierre ;))

Aujourd'hui, facile !

Créeons un index filtré. pour la forme, cette fois ci, je passe par du code T-SQL pour créer mon index filtré :

--------------------------------------------------------------------------------------
USE [Demo]
GO
CREATE UNIQUE NONCLUSTERED INDEX
[IX_NumSecuSociale] ON [dbo].[Client]
(
    [NumSecuriteSociale] ASC
)
WHERE NumSecuriteSociale is not null
GO
--------------------------------------------------------------------------------------

Et c'est fini (oui je sais .. je sais ...)

Il ne reste plus qu'à tester tout ça :

--------------------------------------------------------------------------------------
INSERT INTO [Demo].[dbo].[Client]
           ([ClientId]  ,[EmployeId]   ,[ClientTypeId]   ,[Prenom]   ,[Nom]
           ,[Adresse]   ,[Ville]    ,[CodePostal]    ,[NumSecuriteSociale])
     VALUES
           (NewId()  ,Null  ,1  ,'Sébastien'  ,'Pertus'  ,'4 av M'  ,'TOULOUSE' ,'31100'
           ,'1234567890')
--------------------------------------------------------------------------------------

Et une deuxième fois avec un numéro de sécurité sociale identique

--------------------------------------------------------------------------------------
INSERT INTO [Demo].[dbo].[Client]
           ([ClientId]  ,[EmployeId]   ,[ClientTypeId]   ,[Prenom]   ,[Nom]
           ,[Adresse]   ,[Ville]    ,[CodePostal]    ,[NumSecuriteSociale])
     VALUES
           (NewId()  ,Null  ,1  ,'Jean'  ,'Durand'  ,'Bvd Carnot'  ,'TOULOUSE' ,'31100'
           ,'1234567890')
--------------------------------------------------------------------------------------

Le résultat en image :

Etape5

Insertion de la première ligne et refus d'insertion de la deuxième.

Par contre, je peux tjs insérer des clients sans numéros de sécurité sociale, et autant que j'en veux :)

--------------------------------------------------------------------------------------
INSERT INTO [Demo].[dbo].[Client]
           ([ClientId]  ,[EmployeId]   ,[ClientTypeId]   ,[Prenom]   ,[Nom]
           ,[Adresse]   ,[Ville]    ,[CodePostal]    ,[NumSecuriteSociale])
     VALUES
           (NewId()  ,Null  ,1  ,'Inconnu'  ,'du Bataillon'  ,'P. Jeanne d'arc'  ,'TOULOUSE' ,'31100'
           ,Null)
--------------------------------------------------------------------------------------

Une bien belle fonctionnalité que ces index filtrés !

Happy Indexing !

SQL Server 2008 CTP 6

News reprise du Blog de Pascal Belaud

La nouvelle CTP de SQL Server 2008  ( en CTP 6 ) est disponible !

Et, oh Joie, petite surprise à l'installation qui fait sourire :)

install-sql-2008-sync 
Sync Framework Install

Bon Téléchargement à tous :)

http://www.microsoft.com/sql/2008/prodinfo/download.mspx

Visual Studio 2008 Designer lent

Visual Studio 2008, c'est juste une tuerie en terme de fonctionnalités.

En gros, vraiment, il dépote...

MAIS en design d'une page aspx (un peu grosse) ... IL EST LENT !!! Enfin, lent ... c'est pas le mot exact, je devrais dire INSUPPORTABLEMENT LENT ....

C'est une catastrophe, l'écran se fige quelques secondes avant de vous donner la main; et ce à chaque semblant de déplacement du curseur.

Une horreur....

Et bien heuresement pour vous, le patch corrigeant ce soucis (qui sera inclus dans le SP1 un de ces quatres matins) est arrivé !

Voir le post de Scott Guthrie himself sur le sujet : Hotfix View Performance

Attention, le patch ne fait que 3 mégas, mais il met bien 10 minutes à s'installer ...

[Edit] Je viens de l'installer, et y'a pas à dire, ça vous change la vie !

Plus de Messages Page suivante »