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 :

Problème de lenteur sous réseau


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Points : 38
    Points
    38
    Par défaut Problème de lenteur sous réseau
    Bonjour le monde, merci pour le forum c'est hyper utile pour nous les débutants.

    Mon Objectif actuel :
    Développement d'une application sous C# 2008 pour une utilisation en réseau local (20 postes max)
    Avec une base de données sous Sql Server 2008

    Ce qui est déjà fait :
    - Base de données opérationnelle pour tout les test en mono poste (sur le pc Serveur)
    - Application fonctionne très bien en mon poste toujours (tjr sur le PC serveur)
    - Liaison entre l'application et la BDD 100% opérationnelle sur le même PC Serveur

    Mes soucis :
    Une fois que j'ai commencé les tests en réseau local, je me suis heurté aux problèmes suivants :
    - Impossible de se connecter à la base de données via un poste client, pourtant j'ai autorisé l'accès distant au serveur, et j'ai aussi activé l'accès par authentification windows et sql server
    - j'ai ensuite testé avec sql server 2005 express, je suis arrivé a me connecter avec l'user 'sa' , mais la lenteur de l'exécution est inimaginable


    J'attends de vôtre part juste une indication, comment je dois procéder exactement, et surtout , est-ce que je dois créer un utilisateur sa par exemple qui se connecte pour les 20 postes, ou bien un utilisateur sql server pour chaque poste client.

    Si vous avez des questions n'hésitez pas. Merci le monde

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par AkqiraDev Voir le message
    Mes soucis :
    Une fois que j'ai commencé les tests en réseau local, je me suis heurté aux problèmes suivants :
    - Impossible de se connecter à la base de données via un poste client, pourtant j'ai autorisé l'accès distant au serveur, et j'ai aussi activé l'accès par authentification windows et sql server
    - j'ai ensuite testé avec sql server 2005 express, je suis arrivé a me connecter avec l'user 'sa' , mais la lenteur de l'exécution est inimaginable
    Est-ce que vous avez activé le tcP/IP sur votre BD 2008 ?
    Pour ce qui est de la lenteur, est-ce que ça vient de votre application, serveur applicatif ou de la bd ? Est-ce que votre serveur est à bout de souffle ?
    Difficile d'en dire plus avec si peu de renseignements.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Jerome_Mtl Voir le message
    Est-ce que vous avez activé le tcP/IP sur votre BD 2008 ?
    Réponse : Oui parfaitement, le protocole TCP/IP est bien actif sur la BD

    Citation Envoyé par Jerome_Mtl Voir le message
    Pour ce qui est de la lenteur, est-ce que ça vient de votre application, serveur applicatif ou de la bd ?
    Réponse : C'est mon application qui est très lente pendant son exécution d'un poste client, j'ai pu autoriser un accès a l'utilisateur 'SA', donc je me connecte à la base de données, mais l'exécution de n'importe quel action dans mon application prend beaucoup trop de temps, y compris la fermeture de connexion.

    Citation Envoyé par Jerome_Mtl Voir le message
    Est-ce que votre serveur est à bout de souffle ?
    Réponse : Non, il est assez puissant par rapport à une simple connexion en réseau local. J'ai testé en premier avec une connexion wifi entre les deux PC, ensuite avec une connexion câblée (RJ45), mais le résultat est le même.

    Citation Envoyé par Jerome_Mtl Voir le message
    Difficile d'en dire plus avec si peu de renseignements.
    - Quels sont les renseignements qui peuvent aider d'avantages ?
    - J'ai beaucoup lu hier, et j'ai vu que Microsoft conseille d'utiliser la connexion à la base de données en utilisant uniquement l'authentification Windows. Quelqu'un à un avis sur la question ??

    Merci, le monde, et merci Jerome_Mtl

  4. #4
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Citation Envoyé par AkqiraDev Voir le message
    - J'ai beaucoup lu hier, et j'ai vu que Microsoft conseille d'utiliser la connexion à la base de données en utilisant uniquement l'authentification Windows. Quelqu'un à un avis sur la question ??
    Bonjour,

    Tout dépend de l'utilisation que vous comptez faire de votre instance.
    Je vous conseille le mode mixte, ce qui permet une certaine flexibilité.
    Lorsque l'on recommende uniquement l'authetification windows, c'est surtout d'un point de vue sécurité. N'oubliez pas de mettre un mot de passe sur le login SA. Vous pouvez même éventuellement désactiver ce login.
    Si aucun utilisateur SQL n'est créé, avec SA désactivé, cela revient quasi au même que si vous tourniez en mode d'authetification windows.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    Bonjour,
    La soirée à été longue puisque j'ai effectué plusieurs manipulations afin de déterminer la source du problème.
    J'ai crée un compte SQL Server, en lui attribuant le privilège serveur sysadmin et le privilège base de données db_owner.
    J'ai pu me connecter via réseau wifi a ma base de données d'un côté avec le sql server management studio, et d'un côté avec mon application.

    Voila la mise à jour de mon problème :
    - Mon application devient lente. Pourtant en utilisant le management studio, j'ai lu une table de 1853 lignes en 1 seconde sous réseau toujours.

    - Par exemple, en lançant l'application j'ai ma boite de dialogue qui demande le pseudo et le mot de passe, et quand l'utilisateur valide, je fais un SELECT sur une table Table_Users. Donc si l'utilisateur existe et que le mot de passe est valide, je fais un INSERT dans une autre table Table_LOG pour enregistrer l'accès (procédure stockée au niveau serveur).

    C'est exactement à ce niveau qu'il y'a une défaillance et une perte de temps d'environs 6 secondes. Si je n'appelle pas la procédure stockée pour le INSERT, l'application se connecte rapidement et me donne la main pour travailler, si je laisse le INSERT, l'application se connecte mais tarde à me donner la main, et me renvoie la fameuse erreur sql server 26, qui dit que le serveur n'autorise pas l'accès a distance, Pourtant la connexion se fait étant donné que le SELECT est exécuté.

    Pour trouver une solution, je dois déjà connaitre la source du problème, mes connaissances ne vont pas plus loin, Alors qui peut m'éclairer sur le sujet.

    Merci d'avance

  6. #6
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Avez vous le code de la procédure stockée en question ?
    Comment l'appelez vous dans votre code client ?

    ++

  7. #7
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    Oui voici le code de la procédure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE PROCEDURE dbo.AddLogEntry(@username varchar(10), @dmp varchar(10), 
                                         @action varchar(80), @categorie varchar(80))
    AS
    BEGIN
    /* Procedure body */
    INSERT INTO [Medical_Database].[dbo].[LOG](PSEUDOUSER_LOG, DMP_LOG, 
                     DESCRIPTIONACTION_LOG, CATEGORIEACTION_LOG)
    VALUES(@username,'', @action, @categorie)
    END
    Et voici le code que j'utilise pour appeler ma procédure a partir de l'application :

    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
    // Method Update LOG on Action
    public void method_Add_Log_Entry(SqlCommand myCmd, string username, string dmp, string action, string categorie)
    {
    // Update LOG Table With LogUserSession Procedure
    // Create command
    SqlCommand cmdAddLog = myCmd;
     
    // set connection
    cmdAddLog.Connection = this.conn;
     
    // Config cmdUpdate
    cmdAddLog.CommandText = "AddLogEntry";
    cmdAddLog.CommandType = CommandType.StoredProcedure;
     
    // Add parameters to cmdUpdate
    cmdAddLog.Parameters.Add(new SqlParameter("@username", username));
    cmdAddLog.Parameters.Add(new SqlParameter("@dmp", dmp));
    cmdAddLog.Parameters.Add(new SqlParameter("@action", action));
    cmdAddLog.Parameters.Add(new SqlParameter("@categorie", categorie));
     
     
    // Check if connection is already open
    if (this.conn.State == ConnectionState.Closed)
    {
    this.conn.Open();
    }
     
    // Execute command
    cmdAddLog.ExecuteNonQuery();
     
    }

  8. #8
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    Je fais des tests au fur et a mesure et voici ce que j'ai pu constater.

    Pour la procédure stockée que j'ai appelé de mon programme en lançant la method_Add_Log_Entry j'obtient une lenteur de l'application avec le message d'erreur comme quoi SQL SERVER n'autorise pas les accès distant erreur 26.

    Mais mais mais, si j'appelle directement le contenu de la procédure stockée dans mon programme en utilisant l'objet SqlCommand déjà crée avant, j'ai une exécution instantanée et sans message d'erreurs.

    Est-ce que le fait de déclarer un objet SqlCommand local dans chaque procédure du programme pose problème ?
    Les objets DataReader posent le même problème pratiquement, c'est déconseillé ou quoi ??

  9. #9
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Bonjour,

    Pouvez vous expliciter ce que vous souhaitez réaliser au moyen de votre stored procédure ?
    Auditer l'activité sur une base de donnée ? Sur une table ?

    SQL Server 2008 est fournit avec des fonctions d'audit permettant une granularité assez variable. Cela pourrait être une solution à votre problème et éviterait de placer un tel code dans une stored procédure appelée par une application...
    L'idée serait de créer un audit sur les objets souhaités, stocker cela dans un fichier que vous pourrez ensuite, soit charger dans une table, soit lire, au moyen de fonctions fournies avec le SGBD afin de traiter l'information récoltée.

    Cependant, afin de determiner si cela est une solution qui pourrait convenir à votre besoin, il faudrait que vous explicitiez celui-ci.

    Bonne journée

  10. #10
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    Mon problème finalement était ma chaine de connexion. J'ai utilisé deux chaines de connexion par erreur, la première était valide, alors que la deuxième non. Du coup, ça renvoi le message d'erreur lors de la connexion.

    Merci pour tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Selenium] Problème de lenteur sous IE8
    Par yrsone dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 02/09/2010, 10h06
  2. Problème lenteur sous UNIX Silicon SGI (irix 6)
    Par nador38 dans le forum Autres systèmes
    Réponses: 0
    Dernier message: 28/11/2008, 10h58
  3. Problèmes icônes ordinateurs en réseau sous Vista
    Par glaine dans le forum Administration
    Réponses: 9
    Dernier message: 10/11/2008, 12h27
  4. Problème de lenteur avec requêtes MySql en réseau local
    Par marcootz dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/11/2007, 14h07
  5. Problème de lenteur avec 2 sous-formulaires
    Par picatchou dans le forum Access
    Réponses: 1
    Dernier message: 29/01/2007, 08h48

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