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 :

Assigner des droits sur une database


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut Assigner des droits sur une database
    Bonjour

    Il semble qu'assigner les droits sur une Database MS Sql soit un grand mystere que personne ne semble vraiment maitriser vu le peu de réponse sur le sujet.... voir :
    http://www.developpez.net/forums/d96...s/#post5425174

    Apres toutes les tribulation du topic ci-dessus, j'étais parvenu a attribuer un User ID; pwd et les droits nécessaire sur une DB
    Mais une autre DB issue d'un restore depuis un autre serveur restait récalcitrante

    La meilleure, c'est que aujourd'hui j'ai voulu faire une restore de la premiere DB (fonctionelle) a partir d'un back-up de l'autre serveur

    - Non sans mal car j'ai d'abord du effacer la DB existante pour effectuer le restore

    PATATRA j'ai perdus les droits (alors que sur l'autre serveur j'utilise le meme User ID et PWD)

    Je tente un restore (natif) de la DB que je viens d'effacer
    OUF je récupére les droits

    Je désespère un peu mais j'envisage maintenant une autre solution :

    Est-il possible de scripter les droits d'une DB afin de les réappliquer sur une autre DB ?

    Il y a-t-il par ici quelqu'un ayant suffisement de connaissance en la matiére pour pouvoir aider sur ce sujet ?

    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Et voilà j'ai trouvé la solution a ce problème

    En fait lors du restore, le user est recupéré mais il a perdu son Login.
    On parle d'un user "orphelin"

    La solution est ici

    http://www.fileformat.info/tip/micro...rphan_user.htm

    Et pratiquement il faut executer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use [DbName];
    EXEC sp_change_users_login 'Auto_Fix', '[userName]'
    J'espère que cela pourra aider d'autre.
    (un forum sa sert a s'entraider et partager des connaissance ... Non ... ? )

  3. #3
    Expert confirmé
    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
    Par défaut
    Bonjour olibara,

    Ce problème de droit est classique lors d'un RESTORE d'une base sur un autre serveur. Je vous laisse faire une recherche dans le forum avec le mot clé "sp_change_users_login".

    Pourquoi faire cela donc ? Tout d'abord cette procédure n'est valable que pour les comptes de connexion de type SQL Server. Pour ceux-ci c'est SQL Server qui doit génère le SID qui permet de faire le lien entre un compte de connexion et un utilisateur de bases de données. Lors d'un RESTORE ce lien est brisé puisque sur l'autre serveur le compte de connexion équivalent n'aura pas le même SID. Cette procédure sert donc à refaire ce fameux lien.

    Pour un compte de connexion de type Windows, c'est le système d'exploitation qui est en charge de générer un SID unique pour un compte de connexion (je parle ici de compte de domaine active directory). Dans ce cas, lors d'une opération de restauration le lien entre l'utilisateur de bases de données et le compte de connexion n'est pas brisé (Le SID est unique pour un compte pour l'ensemble du domaine). Il y a quelques cas où il est nécessaire de faire quelques manipulations pour restaurer le lien (Une suppression accidentelle d'un compte de domaine par exemple). Je vous laisse lire ce billet qui explique comment y parvenir.

    ++

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci MikeDavem

    Mais puisque ce problème semble si classique, c'est dommage d'avoir du chercher si longtemps pour trouver la réponse meme en ayant posé plusieurs fois des questions s'y rapportant sur ce forum

    Et je ne pense pas que le mot clef "sp_change_users_login" puisse venir spontanément a l'esprit avant d'avoir déja trouvé la réponse.

    C'est donc une intuition soudaine et un peu de chance qui m'ont amené a verifier les login des user et un peu d'aide sur le forum Sql Team qui ma guidé vers le mot clef magique

    "Orphean user"

    http://www.fileformat.info/tip/micro...rphan_user.htm

  5. #5
    Membre Expert

    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 : 42
    Localisation : Suisse

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

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

    1) Si vous effectuez un restore avec l'option REPLACE, vous n'aurez pas a supprimer la base de donnee prealablement existante.
    Par contre il vous faudra couper les connections utilisateurs ouvertes sur la base car SQL Server pose un verrou exclusif sur la DB a restaurer.

    2) Ne confondez pas les droits et le lien entre database user et login server.
    Si vous restaurer une database DB1 sur un serveur A en la remplacant par la DB1 du serveur B, les droits des utilisateurs seront ceux de la DB1 du serveur B.

    3) Parfois un peu d'anglais et google peuvent servir:
    "link user and login after restore sql server" expose directement le probleme des utilisateurs orphelins.

    4) Scripter l'entierete des droits des utilisateurs/roles sur les differents objets d'une base de donnees n'est pas l'operation la plus simple... Il faut se referer aux tables systemes de SQL Serveur.
    Encore une fois google aide:
    http://vyaskn.tripod.com/scripting_p...erver_2005.htm
    Pour un script plus specifique, je vous invite a vous plonger dans le TSQL et le data modele des tables systeme de SQL Serveur.

    Bonne journee

  6. #6
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci Ptit_Dje

    1) Si vous effectuez un restore avec l'option REPLACE, vous n'aurez pas a supprimer la base de donnee prealablement existante.
    Oui j'avais déja vu cette option sur certains post mais je dois etre aveugle car je ne l'ai trouvé nulle part dans les options de restore sous Management Studio Express, meme en la cherchant bien . Cette option n'existe probablement pas sous EXPRESS

    Donc je dois d'abord effacer la base en local pour restaurer la base issue du backup d'un autre serveur (et ce n'est pas la première fois)

Discussions similaires

  1. Attribution des droits sur une Database
    Par olibara dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 29/05/2011, 11h56
  2. pgAdmin : créer un rôle et lui affecter des droits sur une base
    Par jmnicolas dans le forum Administration
    Réponses: 1
    Dernier message: 14/10/2010, 11h47
  3. Réponses: 7
    Dernier message: 18/07/2010, 18h27
  4. Mettre en place des droits sur une vue différents de ceux de la table-source ?
    Par Antoun dans le forum Administration et Installation
    Réponses: 14
    Dernier message: 15/02/2010, 14h13
  5. [MySQL] Perte des droits sur une table ??
    Par Mystic eyes dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 05/07/2006, 16h40

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