Update FROM cross base en SQLServer

Bonjour,
petit tips en SQL Server, il peut arriver dans la vie d'un développeur de faire une boulette lorsque l'on travaille sur un SGBD et qu'on execute des requetes à chaud.

Pour réparer la boulette sans couper la production on restore un backup sur une autre base et la on doit remettre les données comme elles se trouvaient avant notre méfait.

Pour cela j'effectue un UPDATE de ma table vérolée avec les données de ma table provenant du backup ce qui donne :

UPDATE TableVerolee
SET TableVerolee.Champ1 = TableSauvegarde.Champ1,
TableVerolee.Champ2 = TableSauvegarde.Champ2
TableVerolee.Champ3 = TableSauvegarde.Champ3
FROM BaseBackup.dbo.TABLE_X TableSauvegarde
JOIN BaseProd.dbo.TABLE_X TableVerolee
ON TableVerolee.ChampPk = TableSauvegarde.ChampPK


Voila ça m'a bien sauvé la vie en prod ce matin :)

Asp.Net development server ne fonctionne pas

Bonjour, petit problème lors de la création d’un projet asp.net avec Visual Studio 2008, normalement j’utilise IIS 7.0 pour mes développements mais pour une fois j’ai du utiliser le serveur web fournit avec Visual Studio.

Je crée mon projet web, F5 ça build, ça ouvre IE8 et la je tombe sur cette page.

image

Après de nombreuses recherches et de résultants parlant de problème liés aux firewall ou autre antivirus, je tombe sur un post sur le forum asp.net qui m’indique que le problème viendrait d’une entrée IPV6 dans mon fichier host.

Je trouve bien la ligne correspondante dans C:\Windows\System32\drivers\etc\hosts :

# Copyright (c) 1993-2006 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

::1             localhost

je commente la ligne avec un # et la tout rentre dans l’ordre, je peux de nouveau me servir du serveur web embarqué.

Je ne comprend pas vraiment d’où vient le problème mais ça marche.

Problème d'installation SQL Server 2008

Bonjour,
je viens de rencontrer un problème relativement bouffe temps lors d'une installation d'un SQLSERVER 2008 EXPRESS 64 bit sur un windows 2003 Server 64Bits R2.

L'installeur refuse tout simplement d'installer le moteur de base de données et management studio.
En fouillant un peu je tombe sur une erreur de ce type
Installations failed :

MSI (s) (C4:6C) [15:27:21:609]: Note: 1: 1708
MSI (s) (C4:6C) [15:27:21:609]: Produkt: MSXML 6.0 Parser (KB933579) --
Installation failed.

MSI (s) (C4:6C) [15:27:21:609]: Produkt has been installed by Windows
Installer. Productname: MSXML 6.0 Parser (KB933579). Productversion:
6.10.1200.0. Productlanguage: 1031. Success/Errorcode of Installation: 1603.

MSI (s) (C4:6C) [15:27:21:609]: Cleaning up uninstalled install packages, if
any exist
MSI (s) (C4:6C) [15:27:21:609]: MainEngineThread is returning 1603
MSI (s) (C4:88) [15:27:21:703]: No System Restore sequence number for this
installation.
//J'ai recupéré le message d'erreur car au momment de la redaction de l'article mon installation était terminée.

Cette erreur est liée à MSXML 6.0.
Je googellise un peu avec MSXML 6.0 et SQL Server et je tombe sur ce lien :
http://support.microsoft.com/kb/968749
On nous explique que SQL SERVER 2005 rencontrait un problème similaire. La solution était d'executer un programme clean-up.
Pour ma part je suis allé dans ajout/suppression de programmes et j'ai supprimé MSXML 6.0.

Je relance l'installation de SQLServer 2008 et la miracle l'installation fonctionne.

Donc les petits gars qui s'occupent de l'installeur SQL Server ça serait bien de revoir un peu votre copie car c'est pas le premier problème constaté sur ce setup (problème si une version précédente de SQL Server est installé : il faut supprimer l'ancien setup pour que ça fonctionne etc, etc)

Comment savoir si on est en mode Design en WPF

Bonjour,
petite astuce sur WPF :
pour savoir si la forme est affichée dans le designer utiliser la méthode :

System.ComponentModel.DesignerProperties.GetIsInDesignMode(this);


Simple et ça fonctionne bien

Entity Framework : utiliser une procédure sotckée quand on a renomé



Bonjour,
je remonte un petit bug sur Entity Framework qui apparemment est corrigé dans la version qui sortira avec Visual Studio 2010.

Lorsqu'on souhaite utiliser une procédure stockée qui nous renvoit un EntityData, normalement pas de problème :
on appelle sa procédure stockée via l'ObjectContext qui renvoit ObjectResult où T est une des classes générée via l'edmx.

sauf que si on a modifier le nom d'une des propriétés du T on a le droit à une jolie exception : EntityCommandExecutionException "Le lecteur de données est incompatible avec le « T » spécifié. Un membre du type, « Id », n'a pas de colonne correspondante dans le lecteur de données du même nom."
Vous l'aurez comprit j'ai remplacé l'une de mes propriétés de T par Id.


Donc à partir de la, la seule solution est de se taper le mapping à la main avec le resultat de la fonctionne , le tout à l'ancienne avec un DataReader.

Sniff

Augmenter la durée du timeout lorsqu'on utilise SMO

Bonjour,
Petit problème génant lorsqu'on utilise SMO pour sauvegarder/restaurer une base de données SQL Serveur via dotnet : le timeout.
Si la base est un peu trop grosse on dépasse le timeout par défaut de 10min.

Pour l'augmenter il faut utiliser la propriété StatementTimeout de class ServerConnection.

ServerConnection conn = new ServerConnection(connection);
conn.StatementTimeout = 0;

Mettre la valeur à 0 donne une valeur de timeout infinie.

Live meeting WCF

Comme c’est un sujet qui me tient à coeur je transmet l’info même si c’est un peu chaud niveau délais:

Venez assister, le mardi 17 mars, à une rencontre technologique en ligne sur le thème de Visual Studio. Troisème d’une saga de sept rendez-vous, ce sera l’occasion de découvrir WCF.

La saga présentera plus tard les thèmes suivants : Interfaces riches WPF/Silverlight, TFS, VSTS, Dev office - VSTO. Inscrivez-vous pour le Live Meeting du mardi 17 mars!

Le magazine des geeks



Un magazine excelent fait par des geeks pour des geeks :
http://www.nioutaik.fr/42/

Bourré d'humour et de références plus de 50 pages de bonheur.

Comment autoriser le téléchargement de .msi, .zip et autre sur IIS 7.0

Bonjour après avoir pas mal cherché pour réaliser cette opération qui était très simple sous IIS 6.0, j’ai trouvé une solution, je ne sais pas si il sagit de la meilleur et la plus sécurisé.

Le problème : lorsque que l’on tente de télécharger un .msi, .exe ou autre sur un serveur IIS 7.0 on obtient l’erreur suivante :

Erreur HTTP 404.0 - Not Found

La ressource que vous recherchez a été supprimée, a été renommée ou est provisoirement indisponible.

image

Pour résoudre cette erreur il faut décharger le module qui s’occupe de filtrer les fichiers téléchargés par l’utilisateur sur IIS : RequestFilteringModule

Pour ce faire aller dans IIS 7.0 sur votre site web et sélectionner l’icone Modules :

image

Puis rechercher le module RequestFilteringModule et supprimer le

image

Voila à partir de maintenant vos utilisateurs pourront télécharger ce que bon leur semble.

Sucre syntaxique C#3.0 en C#2.0 avec Visual Studio 2008

Bonjour, l’autre jour je me suis aperçu qu’on pouvait utiliser certaines syntaxe introduites avec C# 3.0 en 2.0.

Je travaille chez un éditeur logiciel ayant des client sous Windows 2000 et donc ne pouvant installer .Net 3.0 et supérieur sur leur machine, nous devons donc rester en 2.0 en attendant que la majorité des clients soit passé sous 2003/XP et supérieur. A partir de la né une grande frustration devant l’impossibilité de jouer avec C#3.0 et .Net 3 et 3.5.

On peut néanmoins trouver une maigre consolation en utilisant Visual Studio 2008.

Trêve de blabla passons directement à un exemple :

Pour cela nous allons créer une solution sous Visual Studio 2008 en .Net Framework 2.0, une application console suffira.

image 

Première fonctionnalité: la possibilité de générer les variables membre privées automatiquement à partir d’un accesseur dans une classe. Très pratique lorsqu’il n’y a pas d’opération spécifique à réaliser sur un get ou un set.

    8     class Sugar

    9     {

   10         public int Weight { get; set; }

   11     }

Deuxième fonctionnalité : l’initialisation d’instance de classe, plus besoin de surcharger le constructeur d’une classe, avec la syntaxe suivante vous pouvez initialiser les membres d’une classe dans le constructeur.

init

Troisième fonctionnalité qui dérive de la première, l’initialisation de collection :

   31             List<Sugar> lstSug = new List<Sugar>

   32             {

   33                 new Sugar { Name = "Suggy", Weight = 100 },

   34                 new Sugar { Name = "SuggO", Weight = 110 },

   35                 new Sugar { Name = "SuggA", Weight = 130 },

   36                 new Sugar { Name = "SuggU", Weight = 150 }

   37             };

Quatrième fonctionnalité : l’inférance de type avec le mot clé var

   31             var lstSug = new List<Sugar>

   32             {

   33                 new Sugar { Name = "Suggy", Weight = 100 },

   34                 new Sugar { Name = "SuggO", Weight = 110 },

   35                 new Sugar { Name = "SuggA", Weight = 130 },

   36                 new Sugar { Name = "SuggU", Weight = 150 }

   37             };

Il nous manque donc les méthodes d’extensions, les lambdas expressions, déja pas mal. Bien évidemment ce code ne pourra compiler sur VisualStudio 2005 mais il s’exécutera sur des machines un peu ancienne.

David Verrière