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 :

[sql2008] Perdre ses accès


Sujet :

Administration SQL Server

  1. #1
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut [sql2008] Perdre ses accès
    Je suis vraiment perdue avec ce cas.

    Je suis en train de faire du ménage sur notre serveur de développement qui est 2008 SP2 (10.0.4000). J'étais dans la section login lorsque je vois quelques nom d'usager qui ont des accès direct. Or, nous préférons passer par des groupes AD.

    Je décide donc de les effacer, en commençant par mon accès personnel.

    Après m'avoir enlevé, je fais un test de connection et... depuis je ne suis plus capable de me connecter au serveur sql !

    Mais comprenez moi bien... je fais partie d'au moins 5 groupe AD qui ont des accès sur le serveur, dont deux qui font partie du rôle sysadmin. C'est à n'y rien comprendre.

    Voici l'erreur qui se trouve dans le error log :

    Error: 18456, Severity: 14, State: 40.

    Login failed for user 'INDLAS\mon_login'. Reason: Failed to open the database specified in the login properties. [CLIENT: xxx.xxx.xxx.xxx]
    Puisque mon_login n'a plus d'accès directement, clairement cela passe par des groupes AD. Mais comment savoir lequel est utilisé pour se connecter à SQL ?

    J'ai utilisé une trace, et le problème semble provenir de la base de données master. ?!? C'est trop étrange, étant sysadmin je devrais avoir les droits de my connecter....

    Si vous avez une piste de recherche pour une solution ce serait sympa !

    Merci,

    Baq'
    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

  2. #2
    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 : 45
    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
    Es-tu capable de te connecter avec un autre login en tant que sysadmin sur le serveur ?

    Visiblement tu fais parti d'un groupe dont la base de données par défaut n'existe plus ou à été renommé. Il faudrait que tu regardes pour chacun des groupes concernés la base de données par défaut et changer celui qui te pose souci.

    ++

  3. #3
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    Bonjour,

    Merci pour la réponse.

    J'ai exécuté cette requête afin de valider votre piste de solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select a.name, dbname, denylogin, hasaccess, sysadmin, isntname, isntgroup, isntuser
    from sys.syslogins a
    	left join sys.sysdatabases b on (a.dbname = b.name)
    Et tous les logins ont une correspondance au niveau bd. De plus, le seul login qui a le flag "denylogin" à 1 n'est pas un groupe mais un Login SQL.

    Je viens de re-tester, et après avoir reçu le message d'erreur, je réussi quand même à me connecter sur le serveur, mais je ne vois pas le SQL Server Agent et il y a plein d'endroit que l'erreur revient (exemple, si je tente de créer un linked server).



    Baq'
    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

  4. #4
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    Citation Envoyé par mikedavem Voir le message
    Es-tu capable de te connecter avec un autre login en tant que sysadmin sur le serveur ?
    J'oubliais de répondre à la question. Oui je me connecte avec le compte sa...
    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

  5. #5
    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 : 45
    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
    Ok.

    Personnellement je commencerai par rechercher quels groupes me concernent avec le script suivant par exemple :

    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
    32
    33
    34
    DECLARE @group_name SYSNAME;
     
    DECLARE @t_group TABLE
    (
    account_name SYSNAME,
    [type] VARCHAR(50),
    privilege VARCHAR(50),
    [mapped login name] SYSNAME,
    [permission path] SYSNAME
    )
     
    DECLARE C CURSOR FOR 
    SELECT name
    FROM sys.server_principals
    WHERE type_desc = 'WINDOWS_GROUP'
    AND principal_id > 4
      AND name NOT LIKE 'NT SERVICE%'
     
    OPEN C;
    FETCH NEXT FROM C INTO @group_name;
     
    WHILE @@FETCH_STATUS = 0
    BEGIN
    INSERT @t_group
    EXEC('EXEC xp_logininfo ''' + @group_name + ''', ''members''')
     
    FETCH NEXT FROM C INTO @group_name;
    END
     
    CLOSE C;
    DEALLOCATE C;
     
    SELECT * FROM @t_group
    WHERE account_name = 'INDLAS\mon_login';
    Ensuite je regarderai pour ces groupes la base de données par défaut associée ainsi que leurs privilèges. Cela peut être l'occasion de faire un peu le ménage (ou non en fonction de ton contexte )

    ++

  6. #6
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    Bonjour,

    Merci pour le script. J'ai du le modifier un peu, et ajouter des crochets autour de la variable @group_name :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC('EXEC xp_logininfo ''[' + @group_name + ']'', ''members''')
    parce que sinon je recevais le message d'erreur suivant :

    Msg 15404, Level 16, State 4, Procedure xp_logininfo, Line 42
    Could not obtain information about Windows NT group/user 'INDLAS\sql_admins', error code 0x5.
    Enfin, lorsque j'exécute le script il ne me retourne rien.
    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

  7. #7
    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 : 45
    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
    Ok donc pour vérifier simplement est-ce qu'en enlevant le prédicat de la dernière requête tu as quelque chose ? Dans le cas d'une réponse positive vérifie si dans un des groupes retournés ton login concerné est présent.

    ++

  8. #8
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    Je remonte un vieux cas pour dire que c'est résolu. Je faisais encore ma tournée ménage et je me suis rendue compte que mon accès personnel était dbowner de quelques bases. J'ai donc exécuter la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sp_changedbowner 'athos'
    sur ces bd pour changer le owner et mettre sa. J'ai effacé mon compte et j'arrive maintenant à me connecter.

    Je comprend pas trop si ça un lien avec mon problème précédent, mais bon finalement c'est résolu....

    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

  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 : 40
    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
    Hello,

    Question script vous aviez sorti l'artillerie lourde !!!

    Pour info, xp_logininfo s'utilise très bien comme ceci pour lister tous les groupes ayant acces à l'instance et dont un utilisateur fait partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xp_logininfo '<domaine>\<username>','all'

  10. #10
    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 : 45
    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
    Effectivement tu as raison Ptit_Dje c'est de l'artillerie lourde mais c'est justifié : xp_loginfo a une fâcheuse tendance à afficher tout ou rien en cas d'erreur. Par exemple si ton utilisateur fait parti d'un groupe de domaine local alors une erreur sera générée par cette procédure stockée. Si tu as donc un groupe qui fout le ... dans la liste tu ne verras donc rien et tu ne verras pas le groupe qui te pose problème.

    ++

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 30/10/2012, 16h15
  2. [VBA-E] Suppression du contenu d'une colonne sans perdre ses formules
    Par mardona dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/04/2007, 09h08
  3. Réponses: 9
    Dernier message: 13/09/2006, 14h19
  4. TweakUI fait perdre ses couleurs a XP.
    Par Bejaia-In dans le forum Windows XP
    Réponses: 3
    Dernier message: 29/05/2006, 18h57

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