Mim

Select * from Seb where Sujets in (SQL Server 2008, ADO.NET, Visual Studio 2008)

mai 2009 - Messages

Sql Server 2008 Training Kit Dependency Checker Windows Seven

Je fais suite à mon dernier Post.

Je viens d’installer le training kit et aprés le Setup, vous devez lancer un Dependency Checker qui va vérifier votre configuration.

Le problème c’est que chez moi, un vieux message d’erreur vient me dire, en substance:

Votre OS n’est PAS supporté !

C’est balot, je suis sur Windows Seven

Bon allez hop, un ti coup de reflector par ci par là, je me rends compte que le Dependency Checker exécute une suite de taches définies dans un fichier de configuration XML.

Soit, il ne reste plus qu’à indiquer dans ce fichier XML que ma config est bonne, en substance ;)

Donc, à la racine de votre répertoire d’installation, vous avez un fichier XML : Dependencies.xml

Il vous suffit de rajouter une section pour Windows Seven avec la bonne Build, mais en le laissant passer pour du Windows Vista, comme suit :

   1: <os type="Vista" buildNumber="6000">
   2:   <dependency
   3:                   value=".\scripts\Dependencies\Check\CheckVistaSP1.ps1"
   4:                   enabled="true"
   5:                   optional="false"
   6:         required="true"
   7:                   title="Windows Vista SP1"
   8:                   explanation="Microsoft SQL Server 2008 for Developers Training Kit requires Windows Vista Service Pack 1"
   9:         scriptName=""
  10:         downloadUrl="http://www.microsoft.com/downloads/details.aspx?FamilyID=f559842a-9c9b-4579-b64a-09146a0ba746" />
  11: </os>
  12: <os type="Vista" buildNumber="7100">
  13:   <dependency
  14:                   value=".\scripts\Dependencies\Check\CheckVistaSP1.ps1"
  15:                   enabled="true"
  16:                   optional="false"
  17:         required="true"
  18:                   title="Windows Vista SP1"
  19:                   explanation="Microsoft SQL Server 2008 for Developers Training Kit requires Windows Vista Service Pack 1"
  20:         scriptName=""
  21:         downloadUrl="http://www.microsoft.com/downloads/details.aspx?FamilyID=f559842a-9c9b-4579-b64a-09146a0ba746" />
  22: </os>

C’est bidouille mais ça fonctionne !

image

Posted: mai 24 2009, 04:00 par Mimetis | avec no comments
Classé sous :
Sql Server 2008 Training Kit

Le training Kit de SQL SERVER 2008 vient juste d’être publié.

Je vous conseille fortement de télécharger les quelques 60 mégas du Kit, dans lequel vous trouverez de multiples ressources dont 6 présentations, 12 démos et 3 “Hands on Lab” :

Voici le détail du Kit (In english in the text :))

  • Presentations (6)
    • Filestream
    • Spatial
    • T-SQL
    • Date and Time Types
    • SQLCLR
    • Reporting Services
  • Demos (12)
    • AdventureWorks Racing All-Up SQL Server 2008 Demo
    • SQL Server 2008 All-Up Spatial Demo
    • Spatial Types Demo
    • Intro to Filestream Demo
    • SQL CLR Nullable Types Demo
    • Programming with Filestream Demo
    • Reporting Services Web Application Integration Demo
    • Date and Time Support in SQL Server 2008 Demo
    • T-SQL Table-Valued Parameters Demo
    • T-SQL Row Constructors Demo
    • T-SQL Grouping Sets Demo
    • T-SQL Merge Demo
  • Hands-on Labs (3)
    • Using Spatial Data in TSQL
    • Using Spatial Data in Managed Code
    • Using SQL CLR in SQL Server 2008

Un MUST HAVE !

Posted: mai 24 2009, 02:58 par Mimetis | avec no comments
Classé sous :
Sync Services : Resynchro totale

Je viens de recevoir un mail me posant la question d’une resynchro totale entre une base de données “client” SQL Server CE et une base de données “server” Sql Server (2005 oou 2008)
Je n’arrive pas à répondre à ce monsieur, l’adresse mail est invalide, alors tant qu’à faire, je vous fais partager la réponse que j’ai faite, ici :

Le problème de réinitialisation des bases clientes reste à ce jour un des grands soucis à mon sens de Sync Services.

Forcer la resynchronisation totale d’une base de données SDF, soyons franc, ça n’est pas simple.

Le problème :

Vous voulez faire une resynchronisation totale de votre base windows mobile:

Pour cela, il va falloir réinitialiser les métadatas de la base de données SQL Server CE, afin d’indiquer lors de la synchro une nouvelle ancre de synchronisation.

C’est données sont stockée dans les tables systèmes de la base de données Sql Server CE

Ces tables sont interrogeables via la requête suivante :

   1: select * from INFORMATION_SCHEMA.TABLES


image

Vous les trouverez dans la table __sysSyncArticle

   1: Select * from __sysSyncArticles

image

Pour chaque table, vous avez l’ancre de dernier envoi et l’ancre de dernière réception. Malheureusement, ces données ne sont pas modifiable par code, ce sont des tables systèmes.

Ce petit outil vous permet de voir les données plus simplement : http://blogs.msdn.com/agujjar/archive/2008/11/22/sync-inspector-tool-inspecting-client-db-state-for-pending-changes.aspx

La seule solution à mon sens, certes ça reste de la bidouille, consiste à … supprimer la base de données cliente et la recréer.

1ère Solution :

Ecraser le schéma:

Si vous écraser le schéma, lors de la prochaine synchronisation; le schéma de votre base sdf va être recréé, et vos données entièrement rapatriées.

Pour récupérer le schéma, il vous suffit d’appeller la méthode GetSchema() sur le DbProvider Server

Un exemple de code :

   1: MyServerSyncProviderProxy server = 
                this.RemoteProvider as MyServerSyncProviderProxy;
   2:  
   3: Collection<String> lstTables = new Collection<string>();
   4:  
   5: foreach (SyncTable st in this.Configuration.SyncTables)
   6:      lstTables.Add(st.TableName);
   7:  
   8: SyncSession ss = new SyncSession();
   9: var schema = server.GetSchema(lstTables, ss);

Le problème, c’est la présence ou non d’autres tables ne faisant pas partie de votre synchronisation. Vous risquez de ne pas pouvoir recréer le schéma, dû peut être à des relations inter tables ou autre. Dans ce cas, il faudra passer à une autre méthode

2eme solution :

Créer une base pour les tables synchronisées, et une base pour les tables non synchronisées. C’est cette solution que j’utilise pour gérer ce cas particulier.

Dans ce cas, un simple Delete de la base de données, puis une recréation par code de la synchro et le tour est joué.

Pour éviter de recréer systèmatiquement le schéma, ce qui peut provoquer une perte de temps non négligeable, j’ai pris l’habitude d’embarquer dans ma solution une base “vide” appellée master, qui contient toutes les tables à synchroniser vide.

Pour le coup, lors de la demande de resynchro complète, je procède en 3 étapes:

  1. Je supprime la base de données sdf existante
  2. Je “Copie colle” la base de données master en la renommant
  3. Je relance une synchro “classique”

3eme solution

Alors là on sort de la juridiction de Sync Services, c’est passer par la réplication Sql Server.

Ca reste à mon sens la solution la plus robuste, si vous être sûr d’avoir entre votre client et votre serveur, du SQL Server Compact et du SQL Server 2005 (2008)

Voilà, j’espère que tout ceci vous parait plus clair à présent.

Sync Services Future

Attention à l’arrivée de la nouvelle mouture de Sync Services, d’ici la fin d’année, basée sur la nouvelle version de Sync Framework, qui apporte autant d’améliorations du core que de nouveautés.

On parle notamment de synchronisation par Snapshot, et de meilleur performance, il faudra donc jeter un coup d’oeil dessus rapidemment pour savoir si ce cas particulier ne pourra pas à terme etre gérer beaucoup plus facilement !

 
Bon courage !

[SQL SERVER] Sp_who2 et sp_WhoIsActive

 

Beaucoup de DBA connaissent la fameuse procédure stockée système “Sp_Who”. En allant plus loin, on peut même utiliser sp_Who2, certes non documentée mais tout aussi efficace pour trouver des locks potentiels.

Je viens de mettre la main sur un petit bijou, une procédure stockée bien charnue, écrite par Mr Adam Machanic, MVP Sql Server. Il s’agit d’une procédure stockée nommé sp_WhoIsActive, et permet de bien mieux appréhender les problèmes de locks et de process actifs au sein de votre serveur SQL Server.

Un petit exemple d’utilisation du système :

Supposons une procédure stockée qui, transactionnellement, n’est pas terminée :

use adventureworks
go
begin tran
update production.product
set name = name
go

Le résultat d’un Sp_Who2 donne :

image 

Bon, soit, c’est déjà pas mal, mais on s’y perd un peu !

Voici le résultat de l’éxécution de la procédure sp_WhoIsActive :

(Note : J’ai inclus quelques options, je vous laisse voir le post de l’auteur pour connaitre l’immensité des possibilités :))

exec sp_whoisactive
@get_transaction_info = 1,
@GET_PLANS =1,
@output_column_list =  '[login_name],[dd hh:mm:ss.mss],[sql_text],[reads],[writes],
        [context_switches],[physical_io],[wait_info],[blocking_session_id],
        [tempdb_writes],[tran_log_writes],[query_plan],[session_id]';

Et voilà le résultat :

image

Voilà, on a de sacrés informations pertinentes. La durée du lock actif, la requête sql en cours d’éxécutions , le Session ID (SPID), le plan d’éxécution etc ….

Bref, un must have pour une maintenance active de votre base de données ;)

Je vous rappelle l’adresse du post de Adam Machanic :

Sp_Who_IsActive

Sql Server 2008 R2

Et voilà c’est officiel, la nouvelle mouture de Sql Server (Kilimanjaro) se nommera Sql Server 2008 R2

Ne vous attendez donc pas à d’importantes innovations, la majeur partie des améliorations se feront coté BI et Clustering de Servers

ProcessorUtilization[1] Dashboard[1]

Et hop un ti lien pour vous tenir informer :

http://www.microsoft.com/sqlserver/2008/en/us/r2.aspx

Sql Server 2008 Service Pack 1, ServerProperty productlevel

Vous le savez suremment (ou non :)) mais le service pack 1 de Sql Server 2008 est sorti il y a peu.

Il est même embarqué dans Windows Update en tant que mise à jour optionnelle.

Bref, Il se peut fortement que vous ayez installé le service pack sur votre machine (ou serveur) ou tu du moins que vous êtes en passe de le faire :)

Une fois installé, tout bon admin réseau (ou développeur) aime bien vérifier que le Service pack est effectivement bien installé.

Première réponse

Aller voir les propriétés du serveur SQL, Via le Sql Server Management Tool :

Avant le SP1 :

image

Aprés le SP1 :

image

On remarque bien les deux numéros de versions différents :

  • Sql Server 2008 RTM : 10.0.1600.22
  • Sql Server 2008 SP1 : 10.0.2531.0

Bon c’est sûr, faut le savoir que la version .2531. c’est le service pack 1…

Deuxième réponse 

Utilisez la fonction Système ServerProperty() qui retourne quelques informations intéressantes !

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

Ce qui donne dans le premier cas :

image

Et dans le deuxième :

image

Plus parlant non ? :)

Posted: mai 05 2009, 03:58 par Mimetis | avec no comments
Classé sous :
Windows 7 Release Candidate

image

Go Go Go !