Astuces SQL Server

Posted on Updated on


Ce billet a pour objectif de mettre le focus sur des problématiques de base de données

Comment augmenter la performance d’une vue en sauvegardant les données sur le disque ?

Créer un undex cluster sur la vue (clustered).

A quoi sert  XACT_ABORT ?

A annuler ou pas une transaction d'une procédure stockée par exemple, si une erreur survient au niveau d'un traitement

SET XACT_ABORT ON

Comment résoudre le problème de fragmentation d’index ?


Soit avec un Rebuild ou Reorganize

Le résultat est obtenu avec la fonction sys.dm_db_index_physical_stats.

Ci-dessous les résultats retournés :  

avg_fragmentation_in_percent : The percent of logical fragmentation (out-of-order pages in the index).

fragment_count : The number of fragments (physically consecutive leaf pages) in the index.

avg_fragment_size_in_pages : Average number of pages in one fragment in an index.

Si avg_fragmentation_in_percent est supérieur à 5% and inférieur à 30%

                => ALTER INDEX REORGANIZE

Si avg_fragmentation_in_percent value est  supérieur  à 30%

                => ALTER INDEX REBUILD WITH (ONLINE = ON)

 

Tips Net

Posted on Updated on


Ci-dessous un ensemble de questions fréquemment posés dans le cadre d’une plateforme .Net de développement , ce post est aussi inspiré de certains sujets évoqués au sein des Best Practise Microsoft

Comment valider la conformité d’un développement par rapport à une architecture avec un Build ? (Prérequis Ultimate License)

Créer une diagramme Layer vide, glisser déposer les briques (Projets de la soltion) sur le diagramme et ajouter les dépendances,

Créer un Build avec archivage contrôllé  Gated CheckIn (Based on Shelveset), dans les arguments de Build ajouter : /p:ValidateArchitecture=true

Comment détecter les copie coller de code source ? (Prérequis VS 2013)

Utiliser la fonctionnalité  Analyse Solution for Code Clones disponible sous la section ANALYSIS

Comment forcer la mise à jour des rapports SSRS sous une plateforme TFS (Disponible sous le portail report Server)?

Accéder à la console d’administration TFS, sélection l’onglet Reporting, cliquer sur le lien Start Rebuild

Comment diagnostiquer un proxy source control TFS ?

 Utiliser le service web ProxyStatistics disponible sur la couche Application

GC.Collect

Tips .Net

Posted on Updated on


Ci-dessous un ensemble de questions fréquemment posés dans le cadre d’une plateforme .Net de développement associée à une infrastructure TFS, ce post est aussi inspiré sur certains sujets des Best Practise Microsoft :

Comment paramétrer la distribution des tests d’une suite pendant leur exécution ?

Définir la propriété Weighting d’un agent de test

Comment réutiliser des cas de test assez facilement ?

Utiliser la fonctionnalité Clone Test Plan sur une suite de test racine

Comment configurer une url d’accès pour votre site tfs ?

Utiliser la console d’administration TFS et définir la propriété Notification URL dans la section Change URIs

Comment récupérer des fichiers supprimés accidentellement sur TFS Source Control ?

Aller dans la section Tools, sélectionner Options, cliquer sur le lien Show deleted items in the Source Control Explorer, faites un clic droit et sélectionner l’option Undelete

Comment faire un export complet des suites de cas de test, au-delà des requêtes WIQL ?
Utiliser les Apis Test Management, ci-dessous quelques snippets à exploiter.

Lister les plans de test actifs avec filtre sur date de fin

ITestPlanCollection testPlanCollection = projet.TestPlans.Query("Select * from TestPlan where PlanState = 'Active' AND EndDate < ‘2015-10-22’ ");
Récupérer les résultats de l’exécution d’un cas de test

ITestManagementService testManagementService = teamProjectCollection.GetService<ITestManagementService>();

// Récupérer le run
IEnumerable<ITestRun> testRunList = testManagementService.QueryTestRuns(string.Format("select * From TestRun where TestRunID={0} AND IsAutomated=0", runId));

// Récupérer le premier résultat
ITestRun testRunTarget = testRunList.FirstOrDefault();

//Récupérer les résultats
ITestCaseResultCollection restCaseResultCollection = testRunTarget.QueryResults();

Comment interrompre les Builds, pour une modification de processus et les exécuter plus tard, une fois la modification finie ?

Définir la propriété Pausing sur l'onglet général de la définition de Build, les builds sont accumulés dans une queue de traitement

To Build Not Finished

Proxy Performance

Posted on Updated on


Dans le cas ou le dépôt de code source est distant par rapport aux postes de développement, il ets necessaire de mettre en place un proxy, permettant de stocker de manirere temporaires les sources.

La configuration du serveur proxy passe la création d’un fichier proxy.config

Le fichier est déposé sous l’aroborescence suivante :
Program Files /Microsoft Team Foundation Server 12.0/Version Control Proxy/Web Services/VersionControlProxy/

?xml version="1.0" encoding="utf-8"?>
ProxyConfiguration 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    Servers>
        Server>
            Uri>@H_TFSSERVER@/
        /Server>
    /Servers>
    
    !-- Proxy file cache root folder -->
    @PROXY_CACHE_ROOT@
    
    CacheLimitPolicy>                    
                !-- Cache limit expressed as percentage of disk space -->
                PercentageBasedPolicy>75
                
                !-- Cache limit expressed as MB -->
                !--  -->
    /CacheLimitPolicy>
 
    !-- The maximum age (in days) of content in the cache following a cleanup operation -->
    DeletionAgeThreshold>30
        
    !-- Percentage of cache size that needs to be freed up, on hitting cache limit -->
    CacheDeletionPercent>10
    
    !-- Indicates how often (number of hours) the proxy statistics information should be persisted to a file-->
    StatisticsPersistTime>1
/ProxyConfiguration>

– Le nœud Server a la liste des serveurs TFS que le serveur TFS proxy va mettre en cache.
– Le nœud CacheRoot a le chemin du répertoire dans lequel le cache est stocké.
– CacheLimitPolicy contient la limite d’espace disque du cache
Il est exprimé en pourcentage avec la clé 75, pour signifier que le cache sera nettoyé lorsque le cache aura atteint 75% de l’espace.
– DelegationAgeThresold représente le nombre de jours avant que le cache soit nettoyé.
– StatisticsPersistTime représente l’intervalle en heures auquel les statistiques du cache sont mises à jour sur le fichier qui se trouve sur le disque

Une fois les les modifications faites dans ce fichier proxy.config, réaliser un IISReset afin de mettre à jour la couche applicative TFS.

GC.Collect

Personnaliser la couleur des WorkItems – Color for Work Item

Posted on Updated on


Il est possible de personnaliser la couleur des éléments de travail pour apporter plus de lisibilité au sein du suivi d’un projet d’équipe agile, notamment du dashboard.
Cette personnalisation s’effectue sur les fichiers de processus d’un projet, comme prérequis est l’utilisation de l’outil de commande « witadmin », celui-ci nous permettra d’exporter les template d’élément de travail, les travailler et les réimporter au sein du projet pour apporter la mise à jour.
Il est nécessaire d’utiliser le nœud « WorkItemColors », ci-dessous un exemple classique référence sous msdn :

   
 workitemcolor name="Product Backlog Item" secondary="FFD6ECF2" primary="FF009CCC" />
  workitemcolor name="Feature" secondary="FFEEE2F2" primary="FF773B93" />
  workitemcolor name="Task" secondary="FFF6F5D2" primary="FFF2CB1D" />
  workitemcolor name="Bug" secondary="FFFAEAE5" primary="FFCC293D" />
  workitemcolor name="Code Review Request" secondary="FFFCEECF" primary="FFFF9D00" />
  workitemcolor name="Code Review Response" secondary="FFFCEECF" primary="FFFF9D00" />
  workitemcolor name="Feedback Request" secondary="FFFCEECF" primary="FFFF9D00" />
  workitemcolor name="Feedback Response" secondary="FFFCEECF" primary="FFFF9D00" />
  workitemcolor name="Impediment" secondary="FFFCEECF" primary="FFFF9D00" />
  workitemcolor name="Shared Steps" secondary="FFFCEECF" primary="FFFF9D00" />
  workitemcolor name="Test Case" secondary="FFFCEECF" primary="FFFF9D00" />

Cependant il est nécessaire de suivre les étapes suivantes :

1. Ouvrir Command Prompt

2. Taper la commande d’exportation (Sous %programfiles(x86)%\Microsoft Visual Studio 12.0\Common7\IDE)

       
witadmin exportprocessconfig /collection:your col. /p:project /f:file

3. Ajouter la section mentionnée ci-dessus au fichier.

4. Lancer la commande d’importation

       witadmin importprocessconfig /collection:your col. /p:project /f:file

Link : http://msdn.microsoft.com/fr-fr/library/hh500408.aspx

GC.Collect

Ci-dessous un rendu de la perso

Visual Studio 14 Just Nice CTP

Posted on Updated on


La nouvelle CTP Visual Studio 14 est axée à mon sens sur l’augmentation de la productivité, et la personnalisation de votre environnement de développement, on y retrouve pas mal de fonctionnalités sympas, je suis déjà Fan J

La CTP est uniquement en anglais, sa compatibilité complète n’est pas garantie avec l’environnement déjà installé.

Elle est à télécharger sur le lien suivant :

http://www.visualstudio.com/en-us/downloads/visual-studio-14-ctp-vs

Ci-dessous un résumé rapide des fonctionnalités majeures :

La possibilité de sauvegarder aisément un environnement de développement, en utilisant les commandes Save Window Layout et Apply Window Layout sous la fenêtre Windows, sans forcément créer un projet squelettes…

de correction automatique au niveau du code source en vue d’une optimisation technique, comme cela était fait auparavant en installant des plateformes de tunning, il s’agit du Light Bulb Editor Adornment.

Une lampe apparait sur la partie gauche de votre classe, cliquer dessus et vous disposez d’un ensemble de suggestions J cela devrait vous rappeler quelque chose.

Let’s Go

published from WP

Custom Editor – Build’s argument

Posted on Updated on


Dans un but de personalisation de build, on fait souvent appel à l’injection de paramètres globaux qu sein du processus de construction, ces paramètres sont injecté concretement au sein du processus, lui est implémenté par un flux de travail, ce flux de travail content des sections classiques de sasise de paramètres tels, arguments ou variables, dans le cadre du post nous allons utiliser la section d’arguments.

Cette section possède une interface graphique au sein de Team explorer, il s’agit bien comme vous vous en doutez de l’onglet Process du Build Definition.
Un paramètre peut être de type simple ou personnalisé, nous allons voir comment définir un type personalisé et une interface spécifique pour la saisie d’une valeur pour ce type.

Un paramètre peut figurer dans la sous section Mix.
arguments

browsetype

 

Commencer par créer une classe particulière Test, représentant ce type particulier.

public class Test
    {
        public string SampleProperty { get; set; }

        public override string ToString()
        {
            return SampleProperty;
        }
    }

Ensuite créer la CredentialDialog, sera la boite de dialogue dédiée à la saisie du type

La CredentialDialog est la boite de dialogue qui sera affichée pour saisir une valeur de notre type personnalisé, pour celà
créer un formulaire WinForms pour la saisie de valeurs

public partial class CredentialDialog : Form
    {
        public CredentialDialog() { InitializeComponent(); }
        public string SampleField
        {
            get
            {
                return SampleField.Text;
            }
            set
            {
                SampleField.Text = value;
            }
        }
}

Crééer la CredentialEditor

La classe contient les métadonnées affichées lorsque un développeur clique sur le bouton argument.
La classe doit implémenter l`interface UITypeEditor

using System.Drawing.Design; 
using System.Windows.Forms.Design; 
using System.ComponentModel; 
using System; 
using System.Windows.Forms; 

namespace BuildTasks.CustomType 
{ 
    class CredentialEditor : UITypeEditor 
    { 
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) 
        { 
            if (provider != null) 
            { 
                IWindowsFormsEditorService editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); 

                if (editorService != null) 
                { 
                    Credential credential = value as Credential; 

                    using (CredentialDialog dialog = new CredentialDialog()) 
                    { 
                        dialog.UserName = credential.UserName; 
                        dialog.Password = credential.Password; 

                        if (editorService.ShowDialog(dialog) == DialogResult.OK) 
                        { 
                            credential.UserName = dialog.UserName; 
                            credential.Password = dialog.Password; 
                        } 
                    } 
                } 

            } 
            return value; 
            
        } 

        public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) 
        { 
            return UITypeEditorEditStyle.Modal; 
        } 
    } 
}

Ci-dessous des imprimes écran décrivant les étapes citées ci-dessus, en premier l’ajustement des métadonnées d’un argument.

cusqtomparam

select
 
GC.Collect()