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 :

Login : base de données par défaut différente de celle du user mappé [2017]


Sujet :

Administration SQL Server

  1. #1
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    avril 2013
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 1 584
    Points : 1 898
    Points
    1 898
    Par défaut Login : base de données par défaut différente de celle du user mappé
    Re hello!

    Sur le net j'ai vu que dans SSMS, quand je crée un login, je lui associe une base par défaut, mettons DB1, ensuite je mappe ce login avec un user U2, qui appartient à la base DB2.
    Ma question est : pourquoi peut-on faire cela, quelles en sont les conséquences car le login est associé à deux bases différentes.

    Dans l'article, le mec disait que la base par défaut est celle dans laquelle j’atterris quand je me connecte à l'instance : c'est pas clair.
    Si je crée une table, celle-ci sera créée dans la base DB2, dans le schéma par défaut du user U2, on est d'accord?

    Donc dans quels cas est-ce que je dois faire attention, lors de mes taches d'administration, sur quelle base je suis connecté? En clair, est-ce que SQL Server considère que je suis toujours connecté à DB1 ou à DB2 par défaut?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  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
    20 558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 20 558
    Points : 48 661
    Points
    48 661
    Billets dans le blog
    1
    Par défaut
    Je suis à peu près sur que vous venez du monde Oracle qui mélange dramatiquement les concepts de User, Owner et schéma... En sus d'être monobase !

    quand je crée un login, je lui associe une base par défaut
    1) un login n'est associé à aucune base. Un login peut être dirigé vers une base après avoir été authentifié. Pour cela il faut que le compte de connexion (login) soit associé à un utilisateur SQL local dans la base.

    Dans l'article, le mec disait que la base par défaut est celle dans laquelle j’atterris quand je me connecte à l'instance : c'est pas clair.
    2) le mec (sans doute moi) dit vrai. La commande lancée à votre insu est USE mabase après authentification. Vous passez donc de la base master (celle qui permet de vérifier que votre login existe et que votre mot de passe soit correct), à la base cible si l’authentification est réussie !

    Si je crée une table, celle-ci sera créée dans la base DB2, dans le schéma par défaut du user U2, on est d'accord?
    3) Oui, si le USE mabase implicite a réussi !

    Donc dans quels cas est-ce que je dois faire attention, lors de mes taches d'administration, sur quelle base je suis connecté?
    4) Si vous êtes connecté avec un login qui permet d'accéder à toutes les bases, vous devez en permanence :
    • soit commencez vos scripts par USE mabase,
    • soit rajouter le nom de la base avant le prefixe de schéma de tous les objets...


    5) En clair, est-ce que SQL Server considère que je suis toujours connecté à DB1 ou à DB2 par défaut?
    Si vous êtes connecté avec un login qui ne permet d'accéder qu'à DB1 ou DB2, vous pourrez utiliser contextuellement les bases master, tempdb, DB1 et DB2...

    SQL Server est strictement conforme à la norme SQL en cette matière. Oracle à fait du grand n'importe quoi en étant monobase et multischéma en sus d'obliger d'avoir un USER owner du schéma !!!
    D’où votre difficulté de compréhension, le modèle Oracle étant aberrant.... C'est pourquoi il vaut mieux étudier la norme SQL qui est utilisé par une grand majorité de SGBDR et constitue un dénominateur commune largement partagé (PostGreSQL, Sybase...).

    A +

    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 chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    avril 2013
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 1 584
    Points : 1 898
    Points
    1 898
    Par défaut
    Oui, je viens du monde Oracle, comme le montre mon blog.

    Ceci étant dit, voici ce que j'ai fais : Nom : Sans titre 5.jpg
Affichages : 50
Taille : 142,5 Ko
    On voit bien que le login ZZTEST a une base par défaut, Test_new. Mais ce login est mappé avec un user de la base Test.
    Ma question est : une fois connecté, si je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(*) from T1;
    avec T1 existant dans les deux bases avec un nb de rows différent, SQL Server interroge quelle base, Test_new ou Test?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  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
    20 558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 20 558
    Points : 48 661
    Points
    48 661
    Billets dans le blog
    1
    Par défaut
    Impossible à dire en lisant juste ces deux écrans ! Cela dépend des privilèges accordés dans chacune des bases à l'utilisateur SQL lié au compte de connexion....

    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 chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    avril 2013
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 1 584
    Points : 1 898
    Points
    1 898
    Par défaut
    Alors disons que le user a reçu le droit de faire un SELECT sur les deux tables T1 des deux bases.

    DOnc, quand je fais mon SELECT, SQL Server me met en priorité sur quelle base, sachant que je ne fais pas de
    ou
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  6. #6
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    novembre 2014
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2014
    Messages : 782
    Points : 1 328
    Points
    1 328
    Billets dans le blog
    2
    Par défaut
    sans use vous serrez automatiquement sur la base systéme master

  7. #7
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    avril 2013
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 1 584
    Points : 1 898
    Points
    1 898
    Par défaut
    Tu es sur? Ni sur DB1 ni sur DB2 mais sur Master?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  8. #8
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    mai 2002
    Messages
    20 558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 20 558
    Points : 48 661
    Points
    48 661
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Boubou2020 Voir le message
    sans use vous serrez automatiquement sur la base systéme master
    Non puisque dans l'écran 1 sa base par defaut est Test_new.

    Autrement dit :
    1) si ton compte de connexion n'a pas de DEFAULT_DATABASE, tu restes sur master
    2) si ton compte de connexion n'est lié à aucun utilisateur SQL, tu restes sur master,
    3) si ton comte de connexion a une DEFAULT_DATABASE et n'est lié à aucun utilisateur SQL, tu auras une erreur et sera jeté
    4) si ton compte de connexion a une DEFAULT_DATABASE et et est lié à utilisateur SQL de ta base par défaut, tu rentre dans la base par défaut mais tu ne pourra faire la requête
    5) si ton compte de connexion a une DEFAULT_DATABASE et que cette base n'existe pas, tu auras une erreur et sera jeté

    Ce qui est important est que les noms de connexion et d'utilisateur qui lui est lié ne soit pas identique ! Sinon, tu vas te mélanger les pinceaux. J'utilise la convention suivante :
    CNX_.... pour un compte de connexion USR_... pour un utilisateur SQL


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

  9. #9
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    avril 2013
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 1 584
    Points : 1 898
    Points
    1 898
    Par défaut
    Merci pour les retours.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

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

Discussions similaires

  1. Changer de base de données par défaut
    Par mappy dans le forum Développement
    Réponses: 5
    Dernier message: 17/09/2013, 10h30
  2. Réponses: 4
    Dernier message: 24/02/2011, 23h09
  3. Connaitre l'interlassement d'un base de données par défaut
    Par bubulemaster dans le forum Débuter
    Réponses: 2
    Dernier message: 06/01/2010, 09h24
  4. [AC-2003] Dossier de base de données par défaut non utilisé
    Par Fredo67 dans le forum Modélisation
    Réponses: 2
    Dernier message: 23/04/2009, 15h40
  5. [DEBUTANT] Base de données par défaut
    Par karamazov994 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/11/2005, 17h29

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