IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[SQL Serveur 2000] INSERT INTO tbl EXEC sp


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Par défaut [SQL Serveur 2000] INSERT INTO tbl EXEC sp
    Bonjour,

    Sur SQL Serveur 2000, j'utilise différentes procédures stockées.
    Lorsque j'exécute la procédure sp_Calcul_Balance avec les paramètre, j'obtiens un résultat dans la minute qui suit.
    Par contre, lorsque j'essaie d'insérer le résultat dans une table (temporaire ou non), le temps d'exécution et d'insertion passe à vingt minutes.

    Est-ce quelqu'un pourrait m'aider à diminuer le temps de traitement?

    Merci beaucoup,

    Olivier

    PS: Le script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    PRINT CURRENT_TIMESTAMP
     
    -- Exécution de la procédure => Durée une minute
    exec sp_Calcul_Balance 'LIKE ''[67]%.%.%.%.%''', 'Societe', NULL, NULL, 6, 2007, 1, 0, 0, 1, 3, 3, 'ref5', NULL, NULL, NULL, NULL, ''
     
    PRINT CURRENT_TIMESTAMP
    -- Création de la table temporaire
    CREATE TABLE #Solde
    (
    	Societe 	varchar (12)  ,
    	Compte 		varchar (43)  ,
    	RefSolde 	varchar (32)  ,
    	BalanceDeb 	float NULL ,
    	MvtsDeb 	float NULL ,
    	MvtsCred 	float NULL ,
    	Mvts 		float NULL ,
    	SoldeFin 	float NULL ,
    	PCEC 		varchar (9)  ,
    	CodeProduit 	varchar (9)  ,
    	CodeTiers 	varchar (13)  ,
    	CodeAnalytique 	varchar (9)  ,
    	Devise 		varchar (3)  ,
    	LibPCEC 	varchar (36)  ,
    	LibProdOuTiers 	varchar (72)  ,
    	Code1C 		char (1)  ,
    	Libelle1C 	varchar (150)  ,
    	Code2C 		char (2)  ,
    	Libelle2C 	varchar (150)  ,
    	Code3C 		char (3)  ,
    	Libelle3C 	varchar (150)  
    ) 
     
     
    -- Insertion des balances de P&L externes (6/7) et internes (86/87)
    PRINT CURRENT_TIMESTAMP
     
    -- Exécution de la procédure et insertion dans une table => 20 minutes
    INSERT #Solde
    exec sp_Calcul_Balance 'LIKE ''[67]%.%.%.%.%''', 'Societe', NULL, NULL, 6, 2007, 1, 0, 0, 1, 3, 3, 'ref5', NULL, NULL, NULL, NULL, ''
    PRINT CURRENT_TIMESTAMP
     
    -- Suppression de la table temporaire
    DROP TABLE #Solde

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    C'est normal les calculs (la requête) se fait en mémoire.
    En revanche les données à insérer dans la table de la base tempdb doivent se faire par écriture sur le disque.
    Il y a un rapport d'au moins 1 à 1000 entre un accès mémoire et un accès disque.

    Ce que vous pouvez faire afin de mnimiser cela est de restructurer votre base temdb :
    en placer le fichier des données sur un agrégat RAID 1 physique
    en placer le fichier du journal de transaction dur un agrégat RAID1 physique différent du précédent
    et en dimensionnant les fichiers (données et journal) à une taille suffisamemment lerge pour qu'aucune opération de croissance n'ait lieu.

    Le mieux étant de ne pas utiliser de table temporaire...
    D'ailleurs à quoi vous ert-elle ???

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Candidat au Club
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Par défaut Utilité de la table temporaire
    "Le mieux étant de ne pas utiliser de table temporaire...
    D'ailleurs à quoi vous sert-elle ???"

    En fait, compte tenu du temps passé (20 minutes) et du fait qu'on doit lancer deux traitements (soit 40 minutes) via un executable VB, nous avons un time-out de SQL(?).
    La solution - peu élégante - est donc de passer par des tables.

    Merci

    Olivier

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Il est possible que votre façon de réaliser le traitement, comme l'indexation des tables soit particulièrement inadéquate d'ou ce temps de traitement anormal.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. SQL Server 2000 : INSERT INTO . . EXEC problème
    Par CleeM dans le forum Développement
    Réponses: 1
    Dernier message: 12/06/2012, 14h42
  2. [MS SQL Serveur 2000] Problème sauvegarde restauration
    Par m-mas dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/11/2005, 12h25
  3. [debutant]Plan de maintenance sous sql serveur 2000
    Par christophebmx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/05/2005, 12h18
  4. Taille Maxi pour un SQL SERVEUR 2000
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 21/07/2003, 09h37
  5. Supprimer une colonne sous SQL Serveur 2000
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/07/2003, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo