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 :

User précédant une fonction


Sujet :

Développement SQL Server

  1. #1
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut User précédant une fonction
    Bonjour,

    Encore dummy en SQL Server (je suis plutôt sur Oracle), je ne comprends pas encore la philosophie des objets USER pour mssql, encore habitué de celui d'Oracle où tout objet SQL appartient obligatoirement par défaut à un schéma (user)!
    Est-il obligatoire de toujours mettre dbo. avant chaque utilisation d'une fonction (UDF) et d'une procédure!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    print dbo.WhichContinent('USA')
     
    select dbo.WhichContinent(Customers.Country), customers.* 
    from customers
    Comment un autre user appelera ces UDF?
    Je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print WhichContinent('USA')
    tout court dans un programme C++ using ADO! Ca marche sans dbo.

    En fait, c'est quoi l'user DBO et peut-on lui définir un mot de passe
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  2. #2
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Dans l'attente d'une réponse favorable...

    Si la fonction a été créée de façon
    CREATE FUNCTION [dbo].

    Comment les autres users l'accèdent?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 : 21 768
    Points : 52 565
    Points
    52 565
    Billets dans le blog
    5
    Par défaut
    il s'agit bien de la notions de SCHEMA SQL et non d'utilisateur....

    En fait, c'est quoi l'user DBO et peut-on lui définir un mot de passe
    dbo est le schéma SQL par défaut de toute base de données SQL Server. Le schéma dbo à comme propriétaire l'utilisateur dbo. Bien que les noms soient identiques, ce sont deux objets différents.
    Toute personne qui se connecte avec SA ou par un compte NT au moins au niveau admin local navigue sous utilisateur dbo.

    Si la fonction a été créée de façon
    CREATE FUNCTION [dbo].
    Comment les autres users l'accèdent?
    En faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT dbo.maFonction( ...
    Il est fortement conseillé :
    1) de préfixé l'appel de tout vos objets (table, vue, procédure, fonction...) avec le schéma
    2) de définir différents schéma dans votre base au gré des besoins fonctionnels ou technique.

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

  4. #4
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    il s'agit bien de la notions de SCHEMA SQL et non d'utilisateur....
    D'accord !

    Dans le cas d'une fonction créée sans préfixe?? A qui appartient-elle?
    Si j'ai alors un programme qui exécute des requêtes sans préfixe et qu'il suffit de lui indiquer un fichier UDL pour se connecter! Tout le monde ne pourra donc pas utiliser ce programme même si l'UDL est correct car il n'a peut-être pas le droit
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 : 21 768
    Points : 52 565
    Points
    52 565
    Billets dans le blog
    5
    Par défaut
    Encore une fois vous faites fausse route :
    Dans le cas d'une fonction créée sans préfixe?? A qui appartient-elle?
    Préfixe, cela n'existe pas. On parle de schéma. Un schéma n'est pas un user....
    Une base de données à toujours un schéma par défaut. Si vous ne l'avez pas spécifié explicitement, alors SQL Server créé pour vous le schéma dbo par défaut dans la base.

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

  6. #6
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    En fait, je voulais pas dire préfixe!!! Je sais qu'une base de données à toujours un schéma par défaut!

    Si vous ne l'avez pas spécifié explicitement, alors SQL Server créé pour vous le schéma dbo par défaut dans la base.
    Mon application a été créée depuis longtemps et utilise des requêtes sans préfixation de schémas devant les objets sql. Donc les machines clientes qui l'utilisent risquent donc de planter un jour??
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 : 21 768
    Points : 52 565
    Points
    52 565
    Billets dans le blog
    5
    Par défaut
    Non, car il y a toujours un schéma par défaut à une base de données. Mais en rzanche au niveau des perfs, c'est pas top, car le système va passer une bonne partie de sa vie à faire de la résolution de noms.

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

  8. #8
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Donc les machines clientes qui l'utilisent risquent donc de planter un jour?
    si chacunes d'elles se connectent avec des utilisateurs différents qui n'ont pas de privilèges sur les tables du schéma dbo??

    Dans un de vos tutos l'ami, vous affirmez même que:
    Un schéma n'est autre qu'une base de données

    Évidemment ce qui vous intéresse le plus c'est d'abord de créer une base de données. C'est à dire un SCHEMA !

    La norme SQL propose l'ordre de création d'une base de données (pardon, d'un schéma) suivant :
    Oui, c'est vrai qu'un schéma est une BD car ce sont des espaces dans lesquels sont référencés des éléments (tables, vues, index...)et sa notion est très liée à la notion d'utilisateur ! Mais pour SQL Server, une database n'est-elle pas chacun des objets visibles dans le dossier Databases (SQL2000) qui peut contenir plusieurs schémas?
    Pourquoi mssql a choisi l'arborescence:
    Tables
    Stored Procedures
    |_________proc1
    |_________proc2
    Users
    |_________dbo
    |_________guest
    UDF

    Pas comme Oracle et Postgresql:
    Instances
    Schemas
    |______sys
    |______system
    |______myschema
    ..........|________tables
    ..........|________stored procedures
    ..........|________etc
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 68
    Points : 40
    Points
    40
    Par défaut
    Non, car il y a toujours un schéma par défaut à une base de données. Mais en rzanche au niveau des perfs, c'est pas top, car le système va passer une bonne partie de sa vie à faire de la résolution de noms.
    A priori, SQL Server 2005 n'utilise plus la résolution de nom.
    Il prend dbo par défaut à moins qu'un autre schéma ai été spécifié lors de la création d'un user (DEFAULT_SCHEMA ).

  10. #10
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Non, car il y a toujours un schéma par défaut à une base de données.
    En fait, quel est le schéma par défaut? Par ex, si c'est souvent dbo alors que la table appartient à un autre schéma alors une requête sans préfixation de schéma ne marchera pas dans un programme!
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

Discussions similaires

  1. récupérer table et user dans une fonction
    Par papy_tergnier dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 15/12/2005, 11h38
  2. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24
  3. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22
  4. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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