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 :

sp_send_dbmail : envoi un résultat seulement si [2008R2]


Sujet :

Développement SQL Server

  1. #1
    Membre expérimenté
    Homme Profil pro
    DBA SQL Server
    Inscrit en
    Octobre 2012
    Messages
    862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA SQL Server
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 862
    Points : 1 736
    Points
    1 736
    Par défaut sp_send_dbmail : envoi un résultat seulement si
    Bonjour à tous,

    J'arrive sans soucis à m'envoyer un email avec le résultat d'un SELECT. Mais je souhaiterais qu'il m'envoi un email UNIQUEMENT si le owner n'est PAS sa. Je suis assez mauvais en T/SQL (pour le moment).

    Voici ce que j'ai qui m'envoie un email à chaque fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     EXEC msdb.dbo.sp_send_dbmail
        @recipients=N'mon adresse mail',
        @importance = 'Normal',
        @body='Voici les DB qui n''ont pas comme owner SA', 
        @subject ='DB - SA owner',
        @profile_name ='SQL Server Support',
        @query =   'SELECT @@SERVERNAME, name, suser_sname(owner_sid) AS ''owner'' 
    				FROM sys.databases
    				WHERE suser_sname(owner_sid) <> ''sa''
    				ORDER BY name ASC',
        @attach_query_result_as_file = 0;
    Merci
    Jean-Luc

  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
    21 899
    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 899
    Points : 53 140
    Points
    53 140
    Billets dans le blog
    6
    Par défaut
    owner c'est le propriétaire d'un objet... Que viens donc faire owner dans votre demande ?

    Je pense que vous faites une confusion entre les notions d'utilisateur SQL, de compte de connexion et de schéma !

    Soyez clair et précis.

    A +

  3. #3
    Membre expérimenté
    Homme Profil pro
    DBA SQL Server
    Inscrit en
    Octobre 2012
    Messages
    862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA SQL Server
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 862
    Points : 1 736
    Points
    1 736
    Par défaut
    Je souhaite que le DB owner soit SA, et pas l'utilisateur qui a créé la DB.

    J'ai trouvé ceci, est-ce correcte ?

    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
    IF EXISTS
    (
    	SELECT @@SERVERNAME, name, suser_sname(owner_sid) AS 'owner'
    	FROM sys.databases
    	WHERE suser_sname(owner_sid) <> 'sa'
    	ORDER BY name ASC
    )
    BEGIN
    	EXEC msdb.dbo.sp_send_dbmail
        @recipients=N'mon adresse mail',
        @importance = 'Normal',
        @body='Voici les DB qui n''ont pas comme owner SA', 
        @subject ='DB - SA owner',
        @profile_name ='SQL Server Support',
        @attach_query_result_as_file = 0;
    END

  4. #4
    Membre expérimenté
    Homme Profil pro
    DBA SQL Server
    Inscrit en
    Octobre 2012
    Messages
    862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA SQL Server
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 862
    Points : 1 736
    Points
    1 736
    Par défaut
    J'ai essayé aussi de cette façon, mais je reçois malgré tout un email :

    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
    SELECT count(*) FROM sys.databases
                    WHERE suser_sname(owner_sid) <> 'sa'
    if (@@rowcount <> 0)
    begin
        EXEC msdb.dbo.sp_send_dbmail
        @recipients=N'mon mail',
        @importance = 'Normal',
        @body='DBs with an owner different than SA', 
        @subject ='DBs - SA owner',
        @profile_name ='SQL Server Support',
        @query =   'SELECT @@SERVERNAME, name, suser_sname(owner_sid) AS ''owner'' 
                            FROM sys.databases
                            WHERE suser_sname(owner_sid) <> ''sa''
                            ORDER BY name ASC',
        @attach_query_result_as_file = 0;
    end

  5. #5
    Membre expérimenté
    Homme Profil pro
    DBA SQL Server
    Inscrit en
    Octobre 2012
    Messages
    862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA SQL Server
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 862
    Points : 1 736
    Points
    1 736
    Par défaut
    Voilà j'ai trouvé, en tout cas ça fonctionne.

    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
    CREATE PROCEDURE [dbo].[st_DB_owner]
    AS
    BEGIN
    DECLARE @WrongDbOwner INT 
    SELECT @WrongDbOwner  = count(*) FROM sys.databases
                    WHERE suser_sname(owner_sid) <> 'sa'
    IF (@WrongDbOwner > 0)
    BEGIN
        EXEC msdb.dbo.sp_send_dbmail
        @recipients=N'my email',
        @importance = 'Normal',
        @body='DBs with an owner different than SA', 
        @subject ='DBs - SA owner',
        @profile_name ='SQL Server Support',
        @query =   'SELECT @@SERVERNAME, name, suser_sname(owner_sid) AS ''owner'' 
                            FROM sys.databases
                            WHERE suser_sname(owner_sid) <> ''sa''
                            ORDER BY name ASC',
        @attach_query_result_as_file = 0;
    END
    END;
    GO

  6. #6
    Membre expérimenté
    Homme Profil pro
    DBA SQL Server
    Inscrit en
    Octobre 2012
    Messages
    862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA SQL Server
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 862
    Points : 1 736
    Points
    1 736
    Par défaut
    Je me permets de relancer mon post car ayant un peu de temps, j'ai fait un test.

    Et je remarque que mon job plante quand l'owner d'une DB n'est pas SA. Mais quand l'owner de toutes les DB sur l'instance sont SA, il ne plante pas.

    Où est-ce que je me trompe ?

    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
     
    CREATE PROCEDURE [dbo].[st_DB_owner]
    AS
    BEGIN
    DECLARE @WrongDbOwner INT 
    SELECT @WrongDbOwner  = count(*) FROM sys.databases
                    WHERE suser_sname(owner_sid) <> 'sa'
    IF (@WrongDbOwner > 0)
    BEGIN
        EXEC msdb.dbo.sp_send_dbmail
        @importance = 'High',
        @body='DBs with an owner different than SA', 
        @subject ='DBs - SA owner',
        @profile_name ='SQL Server Support',
        @query =   'SELECT @@SERVERNAME, name, suser_sname(owner_sid) AS ''owner'' 
                            FROM sys.databases
                            WHERE suser_sname(owner_sid) <> ''sa''
                            ORDER BY name ASC',
        @attach_query_result_as_file = 0;
    END
    END;
    J'ai aussi essayé en changeant ça mais c'est pareil :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (@WrongDbOwner >= 1)
    Quand j'execute mes SELECT, j'ai le résultat que je veux donc je ne comprends pas d'où ça vient.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/09/2011, 09h15
  2. [CR 2008] Envoi du résultat d'export en streaming !
    Par tarekos dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 26/06/2008, 10h12
  3. Réponses: 4
    Dernier message: 21/11/2007, 22h27
  4. [Mail] Envoi des résultats en pièce jointe
    Par keboo dans le forum Langage
    Réponses: 3
    Dernier message: 07/01/2007, 11h05
  5. Requette mysql envoi une résultat eronné
    Par Didier100 dans le forum Requêtes
    Réponses: 16
    Dernier message: 11/12/2006, 14h14

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