none
Expiration du délai d'attente d'une Requête RRS feed

  • Question

  • Bonjour

    J’utilise : SQL SERVER 2005/VS 2008/VB.Net :

    J’ai  comme table (InputFile) qui comporte un champs NumSerie

    Exemple :

    NumSerie

    1001

    1002

    1003

    1004

    1005

    1052

    1053

    1054

    1055

    1056

    1057

    20100

    20101

    20102

    20103

    20104

    20105

    20106

    20107

    20108

     

    Pour avoir mes numéros de série comme suit (First last Quantité):

    First

    Last

    Quantité

    1001

    1005

    5

    1052

    1057

    6

    20100

    20108

    9

     

    J’utilise la Requête :

    Code Snippet

    SELECT     MIN(NumSerie) AS First, MAX(NumSerie) AS Last, COUNT(NumSerie) AS Quantité

    FROM         (SELECT     TOP (100) PERCENT NumSerie, NumSerie -

                                                      (SELECT     COUNT(NumSerie) AS Expr1

                                                        FROM          dbo.InputFile AS Table_Alias2

                                                        WHERE      (NumSerie < dbo.InputFile.NumSerie)) + 1 AS Dis

                           FROM          dbo.InputFile) AS Tble_1

    GROUP BY Dis

     

     

    Cette requête s’exécute Correctement avec des petit Nombre de Données  de l’ordre de quelque Milliers

    Mais dés que les données deviennent plus ou moins important (Moins de Centaine de milliers)

    L’exception suivante se génère

    Expiration du délai d'attente. Le délai d'attente s'est écoulé avant la fin de l'opération ou le serveur ne répond pas.

    Que dois-je faire pour avoir les mêmes résultats que pour les petits volumes de données ??

    -Pourquoi cette Exception ??

    -Y-A-Il un moyen de prolonger le temps de traitement de données par exemple ?

    -Y-A-Il une requête Moins Complexe Pour avoir les mêmes  Résultats (First last Quantité) ??

    Merci de vouloir aider.

     

     

    samedi 15 novembre 2008 12:29

Toutes les réponses

  • -Y-A-Il un moyen de prolonger le temps de traitement de données par exemple ?

     

    Il suffit de préciser un Timeout sur la commande qui par défaut est à 30s :

     

    Code Snippet

    ...

    Dim cmd as SqlCommand = new SqlCommand("SELECT...")

    cmd.CommandTimeout = 90

    ...

     

     

     

    Jean-Pierre Riehl

    MVP SQL Server

    • Proposé comme réponse SCCM-2007 vendredi 25 novembre 2011 15:39
    lundi 24 novembre 2008 22:05
  • Bonjour,

     

    S'l vous plait, en cas où la réponse de Jean-Pierre Rielh vous a permis de résoudre votre problème, pourriez-vous avoir la gentillesse de marquer son post comme bonne réponse ?

    D'abord, vous reconnaissez que Jean-Pierre vous a aidé, ce qui lui fera grand plaisir.

    De plus, un topic marqué comme répondu sera toujours lu par un visiteur de ce forum à la recherche d'une solution pour un problème similaire

     

    En cas où la solution de Jean-Pierre n'aurait pas résolu votre problème, n'hésitez pas à poster à nouveau en expliquant ce que vous avez comme problème, avec peut-être plus de renseignements.

     

    Deux petites remarques :

    - vérifiez que vous n'avez pas le classique problème d'accroissement de taille de la base tempdb qui est fortement sollicitée pour les transactions de longue durée ( les données intermédiaires sont stockées dans cette base, donc, quand vous manipulez un grand nombre e données , cette base peut être trop petite , or l'une des opérations les plus lourdes est une allocation d'espace disque pour une base, puisque le temps nécessaire pour cette opération est inclus dans le timeout de votre commande ). Pourriez-vous vérifier la taille initiale de cette base, et les paramètres growth et filegrowthtype pour la base tempdb ? ( dans Sql Server Management Studio ssms, click droit sur tempdb et clic sur propriétés ) et faire cette vérification pendant le traitement.

     

    - vous pouvez aussi utiliser SSMS et le moniteur d'activité pour voir comment se comporte le process rattaché à votre commande au point de vue IO et temps CPU. SSMS vous permet aussi de voir le plan utilisé par votre SELECT et découvrir l'endroit où se trouve un ralentissement , c'est-à-dire la partie la plus coûteuse en temps ou en ressources.

     

    Vous pouvez aussi utiliser une vue système ( apparue avec 2005 ) sys.dm_exec_sessions

    http://msdn.microsoft.com/fr-fr/library/ms176013.aspx

    voir aussi :

    http://msdn.microsoft.com/fr-fr/library/ms177648.aspx

    la vue système sys.dm_exec_requests renvoie un certain nombre de données qui pourraient soit vous permettre de trouver la solution soit nous être utiles pour essayer de vous aider plus efficacement

     

    Bonne journée

    samedi 6 décembre 2008 14:24