Monthly Archives: January 2006

Quelques notes sur la Presentation de Visual Studio 2005 et SQL Server 2005

Lundi dernier, j’ai assisté à une présentation des versions 2005 de Visual Studio et SQL Server réalisée par le GUVSM (Groupe d’Usagers Visual Studio a Montreal) . Les lignes ci-dessous présentent quelques unes des nouveautés de l’un et de l’autre.

Les contrôles base de données en ASP.NET peuvent être alimentés directement par une abject source, et pas seulement par une BD.
ASP. NET 2.0 : une API de gestion des usagers est livrée en standard. Elle remplace les librairies développées par chacun en fournissant les bonnes méthodes de gestion des usagers (cryptage des données,…). C ‘est la Member Ship API. Les utilisateurs sont stockés dans une base SQL server, Active Directory, ou autre… La gestion des roles est définie. Mise en place de “Login controls” personnalisables.
Stockage des profils utilisateurs standardisé. Smart Client Technologies permettent d’accéder à des
ressources sur le poste client (web Cam,…)
Click Once permet simplement la mise à jour des applications chez les clients (mises à jour automatique).
En 2004, 15% des développements échouent, 51% ont des problèmes (surcoût, retards,..), 34% sont des réussites. Visual Studio. Team system vise à favoriser la communication entre les membres de l’équipe afin d’améliorer le suivi des projets et les taux de réussite. Visual Source Safi est maintenu, mais on assiste à l’apparition de Team Foundation Server, qui s’appuie sur SQL Server. Ce nouvel outil est dimensionable sur WAN contrairement à Source Sa fe. 3-tiers ASP. NET web service.
Intérêt de TFS par rapport à subversion ou CVS : intégration dans Visual Studio.
Visual Studio 2005 définit précisément le rôle de testeur. Outils de collecte des résultats de test,…

SQL Server 2005 (dernière version précédente : SQL serve 2000).
Analyseur de requête et manager sont regroupés et intégrés dans le manager.
Requêtes récursives autorisées Support natif du XML, XQUERY (XML queries)  autorisées.
Support natif pour les services Web HTTP end point object
Les procédures stockées peuvent être codées en C# ou VB.NET.
Report Builder permet à l’administrateur de concevoir ses propres rapports sans passer par Visual Studio. (Info-SSBK dans SQL Server 2000).

Microsoft Logparser and Windows 2000 Server issue

Microsoft Logparser allows you to analyze log files in a generic SQL way. You can analyze your own log files, and even binary log files. For the latter, you need to provide a com object implementing an interface so that the Logparser can read your binary log file.

However, it looks like there is a compatibility issue with Windows 2000 (I’m running the service pack 4). When declaring TIMESTAMP fields or integer fileds, and initializing the variant object in the GetValue method with the V_I8 or V_DATE values, Logparser gives a “Error retrieving field: Bad variable type”.

Using the same version of Logparser (2.2.10) and the same COM DLL on a XP or a 2003 Server machine, everything works fine…

Any clue for a solution ?

HEAP[test.exe]: Invalid Address specified to RtlValidateHeap

Different problems can cause this error.

It is often related to the settings of your projects. If you use different run-time libraries for your main program and for your libraries/DLLs, they will not allocate and deallocate memory in the same way. Consequently, if some memory allocated by a library is released by another one, you may get this kind of error.
You can check your projects settings in : project->settings->C++->Code generation->Use run-time library.

However, the explanation can be really simpler. Just try to delete two times a same object, and you may get this error. To ensure that an object is not deleted twice, just put a breakpoint in its destructor.
I encountered this problem after doing a stupid mistake. I declared a CWinThread m_thread member variable in a class CMyClass I forgot that its m_bAutoDelete member variable is set to TRUE by default. Logically, m_thread was deleting itself once it was terminated. And of course, the destructor of CMyClass was trying to delete m_thread too… BOOM !!!