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 :

Procédure stockée [2008]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Par défaut Procédure stockée
    Bonjour,
    lorsque j'exécute la procédure stockée qui suit avec des droits "sysadmin" j'obtiens un résultat en revanche si le USER n'a que les droits :
    - SELECT
    - VIEW DEFINITION
    - EXECUTE de la procédure stockée
    Je n'obtiens rien, pas une erreur rien.
    Quelqu'un peut il m'aider sur ce point ? Merci par avance.

    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
    USE [master]
    GO
     
    /****** Object:  StoredProcedure [dbo].[sp_MonitorJobs]    Script Date: 10/25/2017 16:43:11 ******/
    SET ANSI_NULLS ON
    GO
     
    SET QUOTED_IDENTIFIER ON
    GO
     
     
    -- =============================================
    -- Author:		CHARPENTIER Thierry
    -- Create date: 24.10.2017
    -- Description:	
    -- =============================================
    CREATE PROCEDURE [dbo].[sp_MonitorJobs]
    AS
    BEGIN
    	SET NOCOUNT ON
    	DECLARE @SQL NVARCHAR(4000)
    	-- Obtenir des informations depuis sp_help_job
    	SET @SQL='SELECT CONVERT(VARCHAR(20),SERVERPROPERTY(''ServerName'')) AS ServerName
    				,j.name AS job_name
    				,CASE j.enabled
    					WHEN 1 THEN ''Enabled''
    					ELSE ''Disabled''
    				END AS job_status
    				,CASE jh.run_status 
    					WHEN 0 THEN ''Failed''
    					WHEN 1 THEN ''Succeeded''
    					WHEN 2 THEN ''Retry''
    					WHEN 3 THEN ''Cancelled''
    					WHEN 4 THEN ''In Progress''
    					ELSE ''Unknown''
    				END AS last_run_status
    				,ja.run_requested_date AS last_run_date
    				,CONVERT(VARCHAR(10),CONVERT(DATETIME,RTRIM(19000101))
    					+ (jh.run_duration * 9 
    					+ jh.run_duration % 10000 * 6 
    					+ jh.run_duration % 100 * 10) / 216e4,108) AS run_duration
    				,ja.run_requested_date AS last_run_date
    				,CONVERT(VARCHAR(500), jh.message) AS step_description
    			FROM (msdb.dbo.sysjobactivity AS ja 
    				LEFT JOIN msdb.dbo.sysjobhistory AS jh ON ja.job_history_id = jh.instance_id) 
    				JOIN msdb.dbo.sysjobs_view AS j ON ja.job_id = j.job_id
    			WHERE ja.session_id=(SELECT MAX(session_id) FROM msdb.dbo.sysjobactivity)
    				AND j.enabled = 1
    			ORDER BY job_name,job_status'
    	EXECUTE sp_executesql @SQL
    END
    GO

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu interroges dans la msdb alors que tu es dans master.
    Est-ce que le user à des droits dans msdb ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Par défaut Je viens de faire le test
    Tout d'abord, merci pour ta réponse.
    J'ai, créé la procédure stockée à la fois dans master et dans msdb afin de tester et ce avec les mêmes droits,
    dans les deux cas je n'obtiens rien
    Bien cordialement

  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 009
    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 009
    Billets dans le blog
    6
    Par défaut
    D'abord on ne parle pas de droit mais de privilèges en matière de SGBDR.

    Ensuite lorsque vous dite avoir donner le privilège SELECT à l'utilisateur, comme un utilisateur est dans une base de données il faut que tout soit dans le même base msdb l'utilisateur comme la procédure et que vous exécutiez cela dans la base msdb.
    Enfin, il n'est pas nécessaire d'utiliser sp_executesql qui elle même pourrait avoir besoin d'un privilège d'exécution.

    Récrivez votre procédure comme suit :

    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
    CREATE PROCEDURE [dbo].[sp_MonitorJobs]
    AS
    SET NOCOUNT ON
    SELECT CONVERT(VARCHAR(20),SERVERPROPERTY('ServerName')) AS ServerName
    	 ,j.name AS job_name
    	 ,CASE j.enabled
    		  WHEN 1 THEN 'Enabled'
    		  ELSE 'Disabled'
    	 END AS job_status
    	 ,CASE jh.run_status 
    		  WHEN 0 THEN 'Failed'
    		  WHEN 1 THEN 'Succeeded'
    		  WHEN 2 THEN 'Retry'
    		  WHEN 3 THEN 'Cancelled'
    		  WHEN 4 THEN 'In Progress'
    		  ELSE 'Unknown'
    	 END AS last_run_status
    	 ,ja.run_requested_date AS last_run_date
    	 ,CONVERT(VARCHAR(10),CONVERT(DATETIME,RTRIM(19000101))
    		  + (jh.run_duration * 9 
    		  + jh.run_duration % 10000 * 6 
    		  + jh.run_duration % 100 * 10) / 216e4,108) AS run_duration
    	 ,ja.run_requested_date AS last_run_date
    	 ,CONVERT(VARCHAR(500), jh.message) AS step_description
    FROM (msdb.dbo.sysjobactivity AS ja 
    	 LEFT JOIN msdb.dbo.sysjobhistory AS jh ON ja.job_history_id = jh.instance_id) 
    	 JOIN msdb.dbo.sysjobs_view AS j ON ja.job_id = j.job_id
    WHERE ja.session_id=(SELECT MAX(session_id) FROM msdb.dbo.sysjobactivity)
    	 AND j.enabled = 1
    ORDER BY job_name,job_status;
    GO
    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 à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Par défaut
    Merci pour le temps que vous m'avez consacré.
    J'ai appliqué les corrections demandées.
    Malheureusement cela na pas réglé mon problème.
    Bien à vous.

  6. #6
    Membre expérimenté Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Par défaut
    Bonjour,

    si c'est comme pour les tables sysobjects, ... le contenu affiché est filtré en fonction des droits/privilèges de l'utilisateur qui exécute la requête.
    Il ne peut voir que les lignes correspondant à des objets auquel il a accès et il n'y a pas d'erreur.
    La même requête n'affichera pas les mêmes lignes que ce soit un compte 'sa' ou un compte d'un utilisateur classique.

    Pour que cela fonctionne il faut donner les mêmes droits de visibilité à l'utilisateur qu'au compte admin. En tout cas je ne sais pas faire autrement

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Par défaut
    Bonjour à tous,
    par soucis d'exhaustivité je vais reprendre les données de mon problème :
    Dans un 1er temps dans msdb j'ai créé une procédure stockée nommée sp_MonotorJobs , dont le code est celui donné par SQLPro.
    Dans un 2eme temps j'ai donné un certain nombre de privilèges a l'utilisateur, à savoir :
    USE msdb
    GO
    GRANT VIEW DEFINITION TO [USER]
    GRANT SELECT TO [USER]
    GRANT EXECUTE ON sp_MonitorJobs TO [USER]
    Lors de l'exécution de la procédure stockée avec un utilisateur ayant ces privilèges, en voici le résultats :
    Nom : Image2.png
Affichages : 111
Taille : 11,1 Ko

    en revanche avec un utilisateur ayant des droits sysadmin, en voici le résultats :
    Nom : Image1.png
Affichages : 112
Taille : 21,2 Ko

    Et je ne comprends pas pourquoi.
    Merci pour tout le temps que vous m'avez consacré.

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

Discussions similaires

  1. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 17h48
  2. Procédure stocké:Insert et renvoie de la clé primair
    Par caramel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2003, 10h34
  3. [Pervasive SQL ] procédure stockée
    Par magellan dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 25/10/2002, 14h17
  4. Explication procédure stockée
    Par underworld dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2002, 11h51
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 13h27

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