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 :

l'erreur 701 : memoire systeme insuffisante


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 42
    Par défaut l'erreur 701 : memoire systeme insuffisante
    bonjour a tous .
    dans le cadre de mon stage d'été . j'ai crée une BDD banque . qui gere les transactions inter-bancaire. j'ai presque fini le travail qui m'ai demandé .
    il me reste un seul probleme pour finir : " faire un etat de solde "
    c'est un fiche qui contient le chiffre d'affaire d'une banque par jour .

    donc j'ai crée un fonction etat_solde_finale(@date) qui retourne la table(libellé_banque,mont)

    lorsque j'execute la fonction select * from etat_solde_finale('2010-08-18') par exemple . la console sql me renvoie ce message d'erreur :

    Msg*701, Niveau*17, État*123, Ligne*1
    Mémoire système insuffisante dans le pool de ressources 'internal' pour exécuter cette requête.

    apres 2 - 3 essaie la console me rend le résultat esperé mais apres 2 a 3 minute d'attente . et en + moi je veux interpreter cette table retourné dans un fichier XL et PDF depuis la fenetre de developpement utilisé (JAVA) et la la console java me retourne le meme message sql .

    j'ai cherche dans google mais les réponse données sont tros complexe pour moi a comprendre car je suis pas un pro en SQL serveur 2008.
    donc je me tourne vers vous afin d'avoir une petit coud main afin de mener mon projet a sa fin .

    j'ai un P4 3 ghz avec 512 ram (windows XP)
    merci pour votre aide .

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Vu la faible quantité de mémoire de votre machine, SQL Server doit être constamment en train de se battre avec Windows pour obtenir de l'espace en RAM, puisque comme tout bon SGBDR, SQL Server travaille exclusivement en mémoire.
    Si mes souvenirs sont bons, il me semble que 512Mo de RAM sont un peu justes pour bien faire fonctionner XP, et vous avez ajouté SQL Server ...

    Je ne sais pas quel est le volume de données de votre base de données, ni quelle quantité moyenne de données de cette base de données réside en RAM, mais il vous reste quelques solutions :

    - optimiser la requête, de sorte qu'elle lise le moins de pages possible
    - sauvegarder votre base de données, et la restaurer sur une machine disposant de plus de RAM que la votre
    - ajouter de la RAM à votre PC

    @++

  3. #3
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 259
    Par défaut
    1. Pour faire tourner SQLServer sur XP il est conseiller d'avoir au minimum 2Go de ram, même si en développement, on peut se contenter de 1Go. D'ailleurs un SQLServer en production sera mieux sur un Windows Server avec 4Go de ram minimum pour un OS en 32 bits, 8Go pour un OS en 64bits
    2. Dans la requete, il est passé une date qui semble être une date de fin de calcul. Il n'y a pas de date de début. Cela signifie-t-il que toutes les données depuis le début de la base jusqu'à la date de fin sont prise en compte dans le calcul ???
      Si aujourd'hui il n'y a pas beaucoup de données, ça peut aller, mais dans quelques années ça risque de vraiment poser problèmes. Le temps de calcul sera proportionnel au volume de données à traiter
    3. De plus, on a pas le code de la fonction, peut-etre que celui-ci est optimisable

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Pour compléter la réponse de sevyc64, la quantité de RAM nécessaire dépend de la fenêtre de données dont votre application a besoin.
    2Go sont conseillés, mais votre application peut en requérir bien plus

    En ce qui concerne les fonctions, elles sont plus célèbres dans SQL Server pour leurs faibles performances (puisqu'elles sont appelées pour chaque ligne de l'ensemble résultat de la requête) que pour autre chose.

    @++

  5. #5
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 42
    Par défaut
    merci de vos réponse .

    j'ai l'intension d'acheter une unité centrale avec les caracteristiques suivantes :

    1. CPU: dual corp 2.8 ghz
    2. RAM: 1 go puis je lui rajouterai 1Go
    3.carte graphique : Gforce 8500 GT 1Go .

    je pense que ça doit etre suffisant pour developper deçu .

    maintenant je revient a ta question sevyc64 : je vais t'expliquer le principe .
    je dois suivre une demarche pour avoir un solde pour chaque banque pour une date de reglement donné qui se calcue comme suit :

    la banque est remettante :
    S1= la somme des montant de toute les operations creditrices (cheque,carte,prelevement ) - la somme de toutes les operations debitrices (rejet,virement)

    la banque est destinataire :
    S2 = la somme des montant de toute les operations creditrices (rejet,virement) - la somme de toutes les operations debitrices (cheque,carte,prelevement )

    ensuite il faut faire la difference entre S1 et S2 pour avoir le solde d'une banque a une date de reglement donnée .

    je vais vous donnée le code de la fonction :


    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
    create function [dbo].[etat_solde_finale] ( @date date) returns table
    as 
    return (select b.libellé,t.Somme from ((select S1.date_reglement,S1.code_banque,(S1.somme-S2.somme) Somme
    		 from solde_destinataire S1 join solde_remetante S2	
    		 on S1.code_banque=S2.code_banque and S1.date_reglement=S2.date_reglement where S1.date_reglement=@date)
     
      union
     
      ( select S1.date_reglement,S1.code_banque,S1.somme Somme from solde_destinataire S1 left outer join solde_remetante S2	
    		 on S1.code_banque=S2.code_banque and S1.date_reglement=S2.date_reglement
    														   where S1.code_banque not in ( select S1.code_banque
    																		 from solde_destinataire S1 join solde_remetante S2	
    																		 on S1.code_banque=S2.code_banque and S1.date_reglement=S2.date_reglement) and S1.date_reglement=@date )
    union	
    ( select S2.date_reglement,S2.code_banque,(S2.somme * -1) Somme from solde_destinataire S1 right outer join solde_remetante S2	
    		 on S1.code_banque=S2.code_banque  where S2.code_banque not in ( select S2.code_banque
    																		 from solde_destinataire S1 join solde_remetante S2	
    																		 on S1.code_banque=S2.code_banque and S1.date_reglement=S2.date_reglement)
    																		 and S2.date_reglement=@date
     
     
     
    )
    ) as t full join bank b on t.code_banque=b.id_banq 
    )

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 031
    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 : 22 031
    Billets dans le blog
    6
    Par défaut
    Préférez placer un max de pognons sur la RAM (au minimum 4 Go) plutot que sur le proc. Un SGBDR ne consomme pas beaucoup de CPU, mais ENORMEMENT de RAM....


    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. [XL-2000] erreur:RESSOURCES SYSTEMES INSUFFISANTES
    Par benexcel2000 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/03/2010, 11h27
  2. Probleme VB6 et erreur 7 memoire insuffisante
    Par dubidon dans le forum Windows
    Réponses: 3
    Dernier message: 31/05/2006, 12h04
  3. [VB6] Erreur 7 memoire insuffisante ??
    Par dubidon dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 31/05/2006, 12h03
  4. Erreur de memoire su Netscape 8.0
    Par joecool2005 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/11/2005, 16h31
  5. [c#] un erreur dans le system.drawing...
    Par pointer dans le forum DirectX
    Réponses: 3
    Dernier message: 13/07/2005, 21h17

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