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

Développement SQL Server Discussion :

USE, GO, session


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    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 : 2 005
    Par défaut USE, GO, session
    Hello,

    Petite question, quand j'exécute le code ci-dessous, le SELECT se fait dans la base TEST même si ma base par défaut est la base TEST_DEV
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    USE [TEST]
    SELECT * FROM clients;
    MAIS si, après cette première exécution, je sélectionne uniquement le SELECT et je fais F5 dans SSMS : le SELECT se fait encore dans la base TEST ou dans TEST_DEV?
    En clair, est-ce que le premier USE TEST a positionné dans ma session la base par défaut comme TEST ou bien ce n'est pas le cas?
    Si ce n'est pas le cas, est-ce qu'une bonne pratique ne serait pas de TOUJOURS préfixer les objets par le nom de la base et du schéma pour éviter ce genre de pb? on fait ceinture et bretelle mais c'est plus sécure!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    USE [TEST]
    SELECT * FROM TEST.USER1.clients;

  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
    22 017
    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 : 22 017
    Billets dans le blog
    6
    Par défaut
    La notion de base par défaut n'existe pas en soi.

    Vous êtes toujours dans le contexte d'une base de données.

    La commande USE permet de changer le contexte d'exécution et donc de passer d'une base à l'autre dans les limites suivantes :
    • un utilisateur associé à votre compte de connexion doit exister dans la base dans laquelle vous voulez exécuter vos commandes
    • en l'absence d'utilisateur associé à votre compte de connexion et si l'utilisateur "guest" est actif et possède des privilèges, vous pourrez séjourner dans cette base
    • dans tous les autres cas, vous ne pourrez pas changer le contexte.

    C'est la seule commande et il n'y en a pas d'autre pour changer le contexte d'une base.

    La commande use peut être lancée :
    • littéralement en tapant USE <nom_base> dans l'éditeur de requête et en lançant cette ligne de code
    • en utilisant la liste déroulante qui lance la commande USE à votre place.


    ATTENTION : l'interface SSMS est trompeuse dans le sens ou chaque fenêtre d'édition des requêtes possède sa propre connexion, et il en est ainsi aussi de l'explorateur SQL...

    En conclusion vous n'avez pas changé de contexte entre la requête 1 et la 2

    En ce qui concerne la notation pointée avec le nom de la base, elle ne devrait être qu'exceptionnelle ! En effet en cas de changement du nom de la base (imposée par certains clients) ce serait la m...

    Et surtout ne confondez pas base de données et schéma SQL, confusion dramatique que l'on constate assez systématiquement avec les gens venant du monde Oracle et de ses mauvaises pratiques en la matière !

    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 Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    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 : 2 005
    Par défaut
    Donc, en résumé, quand je fais un
    USE BASE B1;
    dans une fenêtre query de SSMS, je n'ai pas à le refaire avant chaque opération T-SQL car la base de cette fenêtre query a été fixée à B1.

    Euh, c'est quoi la confusion entre Schéma et base pour ceux qui viennent d'Oracle?

  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
    22 017
    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 : 22 017
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Donc, en résumé, quand je fais un
    USE BASE B1;
    dans une fenêtre query de SSMS, je n'ai pas à le refaire avant chaque opération T-SQL car la base de cette fenêtre query a été fixée à B1.
    YEP !
    N'oublie pas que chaque fenêtre est indépendantes :
    1) les différentes fenêtre d'édition des requêtes ont chacune leur connexion et leur contexte.
    2) l'explorateur d'objets à sa propre connexion et donc son propre contexte...
    3) si tu utilise certains addin SSMS qui permettent d'enrichir le fonctionnement (SQL prompt, Apex SQL...) ces derniers ont leur propre connexion...


    Euh, c'est quoi la confusion entre Schéma et base pour ceux qui viennent d'Oracle?
    Dans Oracle, comme à l'origine il n'y avait qu'une seule base possible, beaucoup de développeurs jouaient sur les schéma SQL pour simuler différentes bases. Alors que SQL Server a toujours été multibase et multi schéma comme PostGreSQL par exemple. Ceci a changé avec le version 12 d'oracle (multitenant) mais comme c'est plus cher et que cela ne résous rien (un seul JT, même collation pour les bases...), personnes ne l'utilise, conservant les mauvaises habitudes Oracle.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/12/2015, 22h50
  2. [Batch] Partager imprimante avec NET USE sur plusieurs session
    Par chrusse dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 12/02/2014, 20h17
  3. [Wamp] SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
    Par maisonduweb dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 18/11/2009, 16h27
  4. [XMLRAD] session
    Par jml dans le forum XMLRAD
    Réponses: 4
    Dernier message: 17/12/2002, 10h24
  5. Connaitre l'unitée à ajouter dans USES
    Par DelphiCool dans le forum Langage
    Réponses: 7
    Dernier message: 01/08/2002, 14h48

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