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 :

Création d'utilisateur


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant technique
    Inscrit en
    août 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : août 2019
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Création d'utilisateur
    Bonjour a tous,

    J'ai une application en VB.net qui me sert a allez dans ma base de donné SQL. Depuis cette application j’exécute une requête pour créer un user et login dans ma base.
    Je cherche une requête SQL qui me permettrait de créer un user que si la table database existe. Sur mon instance je peux avoir [CXmaterial_11] ou [CXmaterial_12] ou les deux.

    J'ai testé cette requête (dans le manager studio) mais elle ne fonctionne pas quand une des deux databases n'est pas présente.
    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
     
    IF  EXISTS (SELECT * FROM sys.database_principals WHERE name = N'usrTOTO')
    DROP USER [usrTOTO]
     
    IF  EXISTS (SELECT * FROM sys.server_principals WHERE name = N'TOTO')
    DROP LOGIN [TOTO]
     
    CREATE LOGIN [TOTO] WITH PASSWORD='pwd',  DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF 
     
    If exist (select * from master.sys.databases where name = 'CXMaterials_12')
    Begin
    	use [CxMaterials_12]
    	create user [usrTOTO] from login [TOTO]
    	ALTER USER [usrTOTO] WITH DEFAULT_SCHEMA=[dbo]
     
    	EXEC sp_addrolemember N'db_datawriter', N'usrTOTO'
    	EXEC sp_addrolemember N'db_datareader', N'usrTOTO'
    End
     
    If exist (select * from master.sys.databases where name = 'CXMaterials_11')
    Begin
    	use [CxMaterials_11]
    	create user [usrTOTO] from login [TOTO]
    	ALTER USER [usrTOTO] WITH DEFAULT_SCHEMA=[dbo]
     
    	EXEC sp_addrolemember N'db_datawriter', N'usrTOTO'
    	EXEC sp_addrolemember N'db_datareader', N'usrTOTO'
    End
    quelqu'un a t'il une idée ?
    Merci d'avance a vous.

  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 982
    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 982
    Points : 49 805
    Points
    49 805
    Billets dans le blog
    1
    Par défaut
    Il faut faire du SQL dynamique.

    De plus la procédure sp_addrolemember est obsolète....
    https://docs.microsoft.com/fr-fr/sql...l-server-ver15


    Quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DECLARE @SQL NVARCHAR(max);
    IF EXISTS
    (   SELECT *
        FROM sys.databases
        WHERE name = 'CXMaterials_12'
    )
    EXEC
    (
       'USE [CxMaterials_12];
        CREATE user [usrTOTO] FROM LOGIN [TOTO] WITH DEFAULT_SCHEMA = [dbo];
        ALTER ROLE db_datawriter ADD MEMBER usrTOTO;
        ALTER ROLE db_datareader ADD MEMBER usrTOTO;'
    );
    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 à l'essai
    Homme Profil pro
    Consultant technique
    Inscrit en
    août 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : août 2019
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    bonjour,

    merci pour cette aide.

    Je n'ai pas réussie a mettre toutes mes instruction dans la même requête car j'avais deux condition If exists à imbriquer. Je n'ai pas trouvé de moyen de faire ça.

    En dissociant ma requête login et user j'ai quand même pus résoudre mon problème. J'ai aussi tenu compte de vos préconisations pour modifier l'attribution des droits à mon user.

    Merci a vous.

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

Discussions similaires

  1. Le problème de la création d'utilisateur et de la connection
    Par nnn2050 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/12/2005, 23h10
  2. création d'utilisateur et Connexion sur SQL Server 200
    Par da_latifa dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/07/2005, 12h26
  3. pb de création d'utilisateurs
    Par devalender dans le forum InterBase
    Réponses: 12
    Dernier message: 06/10/2004, 17h53
  4. Création d'utilisateurs
    Par damaker dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/05/2004, 16h18
  5. Création d'utilisateur sous PostgreSQL 7.3.2 avec PHP
    Par duongkhang dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/06/2003, 14h10

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