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

Accès aux données Discussion :

Migration de données via Procédures stockées, erreur timeout


Sujet :

Accès aux données

  1. #1
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut Migration de données via Procédures stockées, erreur timeout
    Bonjour,

    je veux migrer des données d'une table X dans une base I sur un serveur A vers une table X dans des bases I et J sur un serveur B.

    A.I.X ==> B.I.X et B.J.X

    Les tables ont le même schéma.

    Le traitement de migration est effectué régulièrement via un job.

    La procédure est écrite en C#.

    1. J'ai un problème de timeout sur l'envoi d'un simple insert, il lance la commande et au bout de 30 secondes, time out. Comment puis-je savoir pourquoi il fait ça ? Si je fais la requete en dur sur management studio sur le serveur A en me connectant au serveur B, je n'ai pas ce problème. Pourquoi ai-je ce timeout, comment en trouver l'origine ?

    2. Les choix d'architectures sont-ils bons ?

    Merci

  2. #2
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Salut,

    1. J'ai un problème de timeout sur l'envoi d'un simple insert, il lance la commande et au bout de 30 secondes, time out. Comment puis-je savoir pourquoi il fait ça ? Si je fais la requete en dur sur management studio sur le serveur A en me connectant au serveur B, je n'ai pas ce problème. Pourquoi ai-je ce timeout, comment en trouver l'origine ?
    Si tu te connectes par management studio, combien de temps la requete tourne t'elle ? Si elle tourne 31 secondes, il faut peut-etre modifier ton timeout au niveau de ton appli de migration

    2. Les choix d'architectures sont-ils bons ?
    Euh...quels choix d'architecture ?
    De copier des donnees sur un serveur ?

    Il manque trop de contexte pour pouvoir die quoi que ce soit, quelles sont les quantites, les contraintes & co.

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    Bonjour,

    pour le souci de timeout, j'ai redémarré le service sql server et ça a résolu le souci. Mais une deuxième procédure se retrouve dans le même cas, et redémarrer n'y change rien... C'est la première requête d'insertion qui pose souci, elle ne contient qu'une trentaine de champs, mais par contre la table de destination contient déjà plusieurs centaines de milliers de lignes. En local l'insertion est instantanée.

    Par contre en local une requête select count(*) sur la table de destination arrive à prendre 5-10mn, ce qui me semble aberrant...

    Pour l'architecture, il s'agit de copier toutes les minutes X lignes, allant de 0 à 1000 dans l'idée.

  4. #4
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Citation Envoyé par Arnard Voir le message
    Par contre en local une requête select count(*) sur la table de destination arrive à prendre 5-10mn, ce qui me semble aberrant...
    Ca sent un probleme au niveau de la base de donnees, ca...quand tu fais une requete distante, si tu as la main sur le serveur distant, qu'est-ce qu'il dit (charge cpu, memoire...) ?

    Est-ce que c'est une table "normale", ou une vue ?

    Citation Envoyé par Arnard Voir le message
    Pour l'architecture, il s'agit de copier toutes les minutes X lignes, allant de 0 à 1000 dans l'idée.
    Ce ne serait pas plus simple si la structure de table est la même, d'utiliser des fonctionnalités de log shipping ? ou de replication/mirroring ?

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    Il s'agit d'une table normale.
    Je fais des requêtes sur d'autres tables qui contiennent 30 000 lignes avec un résultat automatique, par contre les count(*) sur mes fameuses tables mènent maintenant à une fermeture du canal avant d'avoir le résultat...

    Faut-il paramétrer les tables pour manipuler de gros jeux de données ?

    J'ai regardé vite fait le log shipping, et cela ne me convient pas, car je désire supprimer les données du serveur A quand je les copie sur le serveur B

    Merci de ton aide en tout cas pour ce souci de table -_-

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    J'ai fait un soft console pour tester l'insertion à distance, ça roule sans souci et en un clin d'œil...

    J'ai ouvert un thread sur la durée anormale des count(*)

    http://www.developpez.net/forums/f49...ms-sql-server/

  7. #7
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    Bon apparemment ces time out étaient du à des select(*) en parallèle, select verrouillant la table, empêchant de lire les données. Sans verrou ça roule

    Merci

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

Discussions similaires

  1. Procédure stockée : erreur de création
    Par jeromesteffe dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 21/06/2007, 18h45
  2. [procédure stockée] Erreur dans un while
    Par LE NEINDRE dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 19/06/2007, 17h46
  3. Réponses: 7
    Dernier message: 03/05/2007, 13h44
  4. Création de procédure stocké erreur
    Par ran_hery dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/02/2007, 10h39
  5. [Procédure stockée] Erreur 1305
    Par SSJ17Vegeta dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 18/11/2005, 03h38

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