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 :

[SQLserver2000]Comment fonctionne SQLServer en cas d'acces concurents a une proc stoc


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Par défaut [SQLserver2000]Comment fonctionne SQLServer en cas d'acces concurents a une proc stoc
    Bonjour,

    Voila, je risque d'avoir pas mal d'utilisateur sur mon appli, et pour des raison X et Y qui me seraient trop longues a expliquées, je ne peut passé par l'auto incrément sur le champs de ma table.
    Donc j'ai mis en place une procédure stockée qui recupere l'id max, insert l'id+1 et recupere le nouvel Id max pour que l'appli puisse utilisé ce nouvel Id.

    Seulement comme il y auras pas mal d'utilisateur a apelé cette proc stoc, je voudrais etre sur de ne pas leur renvoyé 2 fois le meme id, car dans l'appli, ca risque de faire des données doublonnées.

    Donc je voudrais simplement savoir comment SQLserver fera pour géré plusieurs appels de ma proc simultanément ? est ce qu'il va attendre la fin de l'execution de la proc stoc du premier utilisateur pour executer celle du second ? va t il les lancer simultanément (du coup je risque malgrés tout de potentiellement avoir des id renvoyé identique ?) ?

    merci de vos reponses

  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 999
    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 999
    Billets dans le blog
    6
    Par défaut
    ce n'est pas au niveau des procédure qu'il peut y avoir une concurrence, mais au niveau des tables.

    Fait voir ton code (intégralement) et je te corrigerais.

    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
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Par défaut
    le code de la proc stoc ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE PROCEDURE recupMax 
    AS
    DECLARE @maChaine char(32)
     
    SELECT @maChaine =MAX(Tbl_ID_IDCandidat) FROM Tbl_ID
    insert into Tbl_ID (Tbl_ID_IDCandidat) values (CAST(@maChaine AS int(4))+1)
     
    SELECT MAX(Tbl_ID_IDCandidat) AS MaximumID FROM Tbl_ID
    GO

  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 999
    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 999
    Billets dans le blog
    6
    Par défaut
    CATASTROPHIQUE !!!!!

    Imaginez ce qui va se passer quand vous aurez 3000000 lignes dans votre table : à chaque fois que vous voudrez insérer une ligne il faudra véreouiller TOUTE la table.

    Lisez l'article que j'ai écrit sur l'auto incrémentation des clefs. J'y présente une méthode manuelle.
    http://sqlpro.developpez.com/cours/clefs/

    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/ * * * * *

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Par défaut
    merci pour l'info, je vais y jeter un coup d'oeil, seulement mon probleme n'est pas de mieux gérer l'auto-increment manuel, mais de géré une acces simultané a la table.
    en gros comment etre certain que 2 utilisateur ne se retrouverons pas avec le meme identifiant ?

    je viens juste de jeter un coup d'oeil, il y a bien le petit paragraphe qui parle des acces concurents. aparament l la procedure présentée me permet a la fois de bien géré mon auto increment, mais aussi (pas encore de test reel a plusieur utilisateur) les acces concurents.

    merci, maintenant me reste juste a pourvoir appeler cette proc stoc depuis VBA.

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

Discussions similaires

  1. [IP-2010] Gerer acces concurent a une bdd
    Par Logann23 dans le forum InfoPath
    Réponses: 0
    Dernier message: 07/02/2012, 16h44
  2. Accès concurents sur une map
    Par thierryler dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 04/12/2010, 01h10
  3. Comment fonctionne le ClassExplorer ?
    Par borisd dans le forum C++Builder
    Réponses: 7
    Dernier message: 30/09/2004, 17h44
  4. Comment fonctionne le CVS ?
    Par mathieu dans le forum CVS
    Réponses: 6
    Dernier message: 23/03/2004, 11h26

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