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

Administration SQL Server Discussion :

un user en mise à jour, les autres en lecture seule


Sujet :

Administration SQL Server

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 2
    Points : 1
    Points
    1
    Par défaut un user en mise à jour, les autres en lecture seule
    Bonjour à tous,
    Je cherche une manière simple de faire par programme la chose suivante :

    - lorsqu'un programme batch tourne, il doit être le seul à pouvoir mettre à jour la base de données, les autres users pouvant toujours accéder aux données mais en consultation seulement. On accepte que les users se "plantent" s'ils tentent tout de même une mise à jour.

    J'ai lu que c'était possible en jouant sur les rôles, avec db_datareader, db_denydbwriter etc.

    Y a-t-il une possibilité de faire plus simple, en jouant sur l'état de la base de données, sachant que les modes "single user" et "read only" ne répondent pas au besoin*?

    Merci d'avance

  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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Utilisez pour cela le niveau d'isolation de transaction SNAPSHOT dans toutes les procédures stockées "utilisateurs".
    Cela suppose que votre base de données le supporte, et pour cela vous devez exécuter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER DATABASE maBD
    SET ALLOW_SNAPSHOT_ISOLATION ON
    Cette fonctionnalité est gourmande en ressources, surtout sur TempDB, car une copie des données en cours de modification est alors maintenue dans cette base, et que c'est cette copie qui est lue.

    Les utilisateurs ne liront donc pas de données incorrectes comme ce serait le cas s'ils utilisent le niveau d'isolation READ UNCOMMITED, en revanche :
    - ils liront des données qui ne sont pas à jour
    - ils liront cependant des données qui sont cohérentes transactionnellement.

    @++

  3. #3
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Bonjour,

    Oui, ou alors, en fonction de ce que vous voulez faire, un snapshot de la base, (CREATE DATABASE, à partir de 2005, version entreprise), qui peut être vu comme une photo de la base à un instant t, sans doute créé au démarrage du batch. Les utilisateurs connectés à la base du snapshot n'auront que les données à l'instant t. Il faudra qu'il se reconnectent à la base de départ après la fin du batch.

    Le niveau d'isolation snapshot sert surtout à réduire les problèmes de verrous et offre un mécanisme un peu similaire, mais avec des données isolées pour chaque traitemement utilisateur, donc avec des données "glissantes".

    @+

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Août 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour et merci pour vos réponses.
    Je n'avais pas pensé à dupliquer la base avant le batch, je vais creuser cette idée.
    Merci

  5. #5
    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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Pour la création de captures instantanées de bases de données, vous pouvez regarder le billet que j'ai écrit à ce sujet

    @++

Discussions similaires

  1. Pb Mise à jour d'une requête (lecture seule)
    Par marco361020 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 17/09/2008, 17h44
  2. Réponses: 5
    Dernier message: 23/09/2007, 18h47
  3. Mise à jour impossible, objet en lecture seule
    Par Pitou5464 dans le forum Access
    Réponses: 3
    Dernier message: 12/09/2006, 18h26
  4. Réponses: 2
    Dernier message: 11/08/2006, 11h11

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