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 :

Creation de login dans procédure stockée [2008R2]


Sujet :

Développement SQL Server

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 48
    Points : 33
    Points
    33
    Par défaut Creation de login dans procédure stockée
    Bonjour,

    J'ai une procédure stockée qui me créée un login et un utilisateur. Cette procédure utilise du SQL dynamique, j'utilise donc la commande WITH EXECUTE AS OWNER pour que les droits ne soit pas vérifiés au niveau de l'utilisateur qui l’exécute.
    L'utilisateur qui a créé la procédure possède le rôle au niveau server sysadmin.

    Mon problème est que l'orsque que je regarde le propriétaire de la procédure il est indiqué dbo et non le nom de mon utilisateur ou sysadmin... qui possède le privilègede création de login. La procédure me retourne un message d'erreur :L'utilisateur n'est pas autorisé à effectuer cette action.

    Avez vous une idée?

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    ALTER PROCEDURE [dbo].[P_CREATE_NEW_USER]
     
    	@NAME nvarchar(50)
     
     
    WITH EXECUTE AS OWNER
    AS 
     
    DECLARE @SQLStatement nvarchar(255)
     
    SET NOCOUNT ON
     SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
     BEGIN TRANSACTION CREATE_NEW_USER
     
     
    BEGIN
     
     
    IF NOT EXISTS 
        (SELECT name  
         FROM master.sys.server_principals
         WHERE name = 'CNX_'+rtrim(@NAME))
     
    BEGIN
        SET @SQLStatement = 'CREATE LOGIN CNX_'+rtrim(@NAME)+' WITH PASSWORD = '''+rtrim(@NAME)+''''
    	Exec (@SQLStatement)
    print (@SQLStatement)
    END
     
    IF NOT EXISTS
        (SELECT name
         FROM sys.database_principals
         WHERE name = rtrim(@NAME))
         BEGIN
    SET @SQLStatement = 'CREATE USER '+rtrim(@NAME)+' FROM LOGIN CNX_'+rtrim(@NAME)
    Exec (@SQLStatement)
    print (@SQLStatement)
     
     
    END
     
    IF @@ERROR <> 0
     BEGIN
        GOTO LBL_ERROR
        RETURN
     END
     
    END
     
     COMMIT TRANSACTION CREATE_NEW_USER
     RETURN
     
     LBL_ERROR:
     ROLLBACK TRANSACTION CREATE_NEW_USER
     RETURN
    En résumé ma question est comment éxécuter cette procédure stockée sans avoir le privilège server sysadmin?
    La seule piste que j'ai trouvé parle de certificat en signant la procédure stocké mais je ne comprend pas...

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 89
    Points : 117
    Points
    117
    Par défaut
    Bonjour,

    A défaut d'être admin je ne vois pas comment un utilisateur lambda pourra utiliser cette PS.
    Effectivement sysadmin est peut-être de trop, mais personnellement je jetterais un œil sur les rôles de la base (db_accessadmin et db_securityadmin)

    HTH,

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 48
    Points : 33
    Points
    33
    Par défaut
    La solution que j'ai trouvé est la suivante, cela fonctionne pour moi:

    http://blogs.msdn.com/b/sqlserverfaq...as-clause.aspx

    Sébastien

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 25/08/2021, 15h52
  2. Alter table dans procédure stockée
    Par mehitabelle dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/11/2005, 17h14
  3. Réponses: 7
    Dernier message: 16/09/2005, 11h14
  4. procédures stockées dans procédure stockée
    Par olivc dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 30/05/2005, 17h58
  5. SQL dans Procédure stockée
    Par julure dans le forum Oracle
    Réponses: 13
    Dernier message: 02/11/2004, 17h57

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