Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Administration
Administration Forum d'entraide sur l'administration du dataserver, via SSM ou ligne de commande, les tables système, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2010, 09h01   #1
Membre du Club
 
Inscription : octobre 2006
Messages : 386
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 386
Points : 65
Points : 65
Par défaut [MSSQL-2000] Configuration Email Notification Travaux

Bonjour,

J'ai un serveur SQL Serveur 2000.

J'ai pas mal de JOB de sauvegarde sur ce serveur et je souhaiterai m'envoyer des notifications de courriel pour connaître le résultat de ceux-ci.

Est-il possible de configurer des notifications par courriel?

Si oui avez vous une procédure à me transmettre?

Merci d'avance pour votre aide,

.Matt
GarsDuCalvados est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 11h21   #2
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Bonjour,

Oui il est possible de configurer les notifications par mail.
Avec SQL Server 2000 vous devez :
- soit utiliser un client MAPI, configurer un compte de mail et l'utiliser avec vos alertes dans l'agent SQL Server.
- soit utiliser directement les objets OLE . sp_OACreate etc ...

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/12/2010, 04h59   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 950
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 950
Points : 17 766
Points : 17 766
évitez la solution 1 de mikedavem.
pour la solution 2, lisez l'article que j'ai écrit : http://blog.developpez.com/sqlpro/p6...-outlook-2000/

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2010, 15h09   #4
Membre du Club
 
Inscription : octobre 2006
Messages : 386
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 386
Points : 65
Points : 65
Bonjour à vous 2,

La procédure m'a l'air vraiment bien ==> http://blog.developpez.com/sqlpro/p6...-outlook-2000/

Par contre pour cette partie :
Code :
1
2
3
4
5
6
7
8
Pour faire en sorte que l'agent SQL Server envoie régulièrement les messages que vous avez préparés dans la table T_MESSAGE_MSG, programmez l'exécution régulière, par exemple toutes les 5 minutes, de la procédure P_MESSAGE_SEND.
 
Attention : pour fonctionner, cette procédure doit être modifiée. Vous devez remplacer '???' dans la partie de code suivant :
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields "http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', '???'
par l'adresse IP ou le nom de votre serveur de messagerie...
Vous devez aussi indiquer l'adresse de l'expéditeur du message dans la partie de code suivante :
SET @From='!!!'
En guise de test, essayez d'exécuter la procédure dans l'analyseur de requête
Pour l'adresse IP du serveur de messagerie, je met le serveur EXCHANGE que nous avons?

De plus, nous utilisons la partie TRAVAUX dans l'agent SQL pour faire des BACKUP des BDD.

Capture d'écran :


A quel moment dois je appeler la procédure et faire en sorte qu'elle m'envoit un mail avec le résultat du travail?


Merci d'avance pour votre aide,

.Matt
GarsDuCalvados est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 15h22   #5
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Citation:
Pour l'adresse IP du serveur de messagerie, je met le serveur EXCHANGE que nous avons?
Oui

Citation:
A quel moment dois je appeler la procédure et faire en sorte qu'elle m'envoit un mail avec le résultat du travail?
Il faut ajouter une etape dans votre job et y mettre la procedure d'envoi de mail. Il faut egalement modifier les etapes existantes en specifiant l'etape que vous avez ajoute en cas d'echec.

En gros :

step 1 : backup

--> Successfull --> quit job
--> Failed --> go to step 2

step 2 : envoi mail

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2010, 16h23   #6
Membre du Club
 
Inscription : octobre 2006
Messages : 386
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 386
Points : 65
Points : 65
OK je comprend

Je vais tester sur mon MSSQL de TEST.

Je vous tiens au courant.


Merci

.Matt
GarsDuCalvados est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 09h58   #7
Membre du Club
 
Inscription : octobre 2006
Messages : 386
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 386
Points : 65
Points : 65
Bonjour,

Dans l'appel de la procédure stocké :

Code :
1
2
3
P_MESSAGE_SET @TITRE='Titre de mon message Test',  
              @TEXTE='Texte de mon message de Test', 
              @DEST1='CB',@TEVCODE1='
Il est fait appel au pramaètre "@TEVCODE1".
Mon SGBD me renvoi que cette procédure ne prend pas en compte ce libellé de paramètre.

Voici les paramètres pris en compte :

Code :
1
2
3
4
5
6
CREATE PROCEDURE P_MESSAGE_SET @TITRE VARCHAR(128), @TEXTE VARCHAR(5000), 
        @DEST1 CHAR(3), 
        @DEST2 CHAR(3), @TEVCODE2 CHAR(3), 
        @DEST3 CHAR(3), @TEVCODE3 CHAR(3), 
        @DEST4 CHAR(3), @TEVCODE4 CHAR(3) 
AS
Il n'y a pas @TEVCODE1.
A quoi correspondes les paramètres "@TEVCODE2,3 et 4"?


Merci d'avance pour votre aide,

.Matt
GarsDuCalvados est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 10h25   #8
Membre du Club
 
Inscription : octobre 2006
Messages : 386
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 386
Points : 65
Points : 65
Donc voilà ou j'en suis.

Je souhaite envoyer à un seul utilisateur par exécution de procédure.
J'ai enlevé les DESTINATAIRE 2,3 et 4.

Donc j'ai modifié la procédure P_MESSAGE_SET comme ceci :

Code :
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
 
CREATE PROCEDURE P_MESSAGE_SET @TITRE VARCHAR(128), @TEXTE VARCHAR(5000), 
        @DEST1 CHAR(3), 
        @TEVCODE1 CHAR(3) 
 
AS 
IF @TITRE IS NULL OR @TEXTE IS NULL OR @DEST1 IS NULL RETURN 
 
DECLARE @ID_MESSAGE INT 
 
BEGIN TRAN 
  -- INSERTION DU MESSAGE -- 
  INSERT INTO T_MESSAGE_MSG (MSG_TITRE, MSG_TEXTE) 
  VALUES (@TITRE, @TEXTE) 
  IF @@ERROR<>0 GOTO TRAITE_ERREUR 
  -- RECUPERATION ID MESSAGE --  
  SET @ID_MESSAGE=@@IDENTITY 
  -- INSERTION DESTINATAIRE PRIMAIRE -- 
  INSERT INTO T_ENVOYE_EVO  
  SELECT @ID_MESSAGE, 
               (SELECT DST_ID  
                FROM T_DESTINATAIRE_DST  
                WHERE UPPER(DST_CODE)=UPPER(@DEST1)),  
         (SELECT TEV_ID  
                FROM T_TYPE_ENVOI_TEV  
                WHERE UPPER(TEV_CODE)='TO') 
  IF @@ERROR<>0 GOTO TRAITE_ERREUR      
 
 
COMMIT TRAN 
RETURN 
 
TRAITE_ERREUR: 
ROLLBACK TRAN 
 
GO
De plus quand j'exécutais la procédure P_MESSAGE_SET, le requeteur me retournée des erreur comme quoi les champs "MSG_DH_INSERE - MSG_DH_ENVOI - MSG_FAILED" ne peuvent pas être NULL.
J'ai donc modifié dans la tâble T_MESSAGE_MSG ces champs afin d'autoriser qu'il peuvent être NULL.


J'ai donc exécuté la procédure comme ceci dans le requeteur :

Code :
1
2
3
P_MESSAGE_SET @TITRE='Titre de mon message Test',  
              @TEXTE='Texte de mon message de Test', 
              @DEST1='MC',@TEVCODE1='To'

Qui a ajouté une ligne dans la table :




Ensuite j'ai exécuté la procédure P_MESSAGE_SEND.
En exécutant cette procédure, j'ai bien reçu le MAIL.

Mais celle-ci genère des erreur dans le requetteur :

Code :
1
2
3
4
5
6
Serveur : Msg 536, Niveau  16, tat 3, Procdure P_MESSAGE_SEND, Ligne 46
Paramtre de longueur incorrect pass  la fonction de sous-chane.
Serveur : Msg 536, Niveau  16, tat 3, Procdure P_MESSAGE_SEND, Ligne 53
Paramtre de longueur incorrect pass  la fonction de sous-chane.
 
(1 ligne(s) affecte(s))

En lisant les erreurs c'est à ce niveau là que j'ai l'erreur :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
SELECT @Cc=@Cc + DST_EMAIL + ', '  
  FROM T_DESTINATAIRE_DST DST INNER JOIN T_ENVOYE_EVO EVO ON DST.DST_ID=EVO.DST_ID 
            INNER JOIN T_TYPE_ENVOI_TEV TEV ON EVO.TEV_ID=TEV.TEV_ID 
  WHERE MSG_ID=@ID_MSG AND UPPER(TEV_CODE)='CC' 
  SET @Cc=SUBSTRING(@Cc,1,LEN(@Cc)-1) 
  -- Alimentation destinataire secondaire cach -- 
  SET @Bcc='' 
  SELECT @Bcc=@Bcc + DST_EMAIL + ', '  
  FROM T_DESTINATAIRE_DST DST INNER JOIN T_ENVOYE_EVO EVO ON DST.DST_ID=EVO.DST_ID 
            INNER JOIN T_TYPE_ENVOI_TEV TEV ON EVO.TEV_ID=TEV.TEV_ID 
  WHERE MSG_ID=@ID_MSG AND UPPER(TEV_CODE)='BCC' 
  SET @Bcc=SUBSTRING(@Bcc,1,LEN(@Bcc)-1)

Voici l'enregistrement du message aprés l'exécution de la procédure P_MESSAGE_SEND dans la tâble T_MESSAGE_MSG :




Pouvez-vous m'aider à résoudre ce problème?


Merci d'avance pour votre aide,

.Matt
GarsDuCalvados est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 11h27   #9
Membre du Club
 
Inscription : octobre 2006
Messages : 386
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 386
Points : 65
Points : 65
C'est bon j'ai trouvé l'erreur .

En fait vu que j'utilise pas le destinataire secondaire et le destinataire secondaire caché.

Ben j'ai supprimé cette partie de la procédure et niquel la procédure s'exécute sans erreur :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- Alimentation destinataire secondaire -- 
  SET @Cc='' 
  SELECT @Cc=@Cc + DST_EMAIL + ', '  
  FROM T_DESTINATAIRE_DST DST INNER JOIN T_ENVOYE_EVO EVO ON DST.DST_ID=EVO.DST_ID 
            INNER JOIN T_TYPE_ENVOI_TEV TEV ON EVO.TEV_ID=TEV.TEV_ID 
  WHERE MSG_ID=@ID_MSG AND UPPER(TEV_CODE)='CC' 
  SET @Cc=SUBSTRING(@Cc,1,LEN(@Cc)-1) 
  -- Alimentation destinataire secondaire cach -- 
  SET @Bcc='' 
  SELECT @Bcc=@Bcc + DST_EMAIL + ', '  
  FROM T_DESTINATAIRE_DST DST INNER JOIN T_ENVOYE_EVO EVO ON DST.DST_ID=EVO.DST_ID 
            INNER JOIN T_TYPE_ENVOI_TEV TEV ON EVO.TEV_ID=TEV.TEV_ID 
  WHERE MSG_ID=@ID_MSG AND UPPER(TEV_CODE)='BCC' 
  SET @Bcc=SUBSTRING(@Bcc,1,LEN(@Bcc)-1)
Merci pour votre aide,

.Matt
GarsDuCalvados est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 16h22   #10
Membre du Club
 
Inscription : octobre 2006
Messages : 386
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 386
Points : 65
Points : 65
Bonjour,

En fait je ré-ouvre mon TOPIC car j'ai une erreur.

Je vous explique.

Sur mon SGBD j'ai 5 BDD.
A 16h00 j'ai 5 Travaux qui se lancent en même temps pour faire un BACKUP des Journaux de transactions.

J'ai rajouté dans chaque travail les étapes OK et ECHEC pour envoyer le bon MAIL.




ETAPE OK :
Code :
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
USE DB_SENDMAIL
 
GO
P_MESSAGE_SET @TITRE='[SRV_OK] Sauvegarde_Journal_DATAMEAL_OK',  
              @TEXTE='Le journal des transactions DATAMEAL a correctement été sauvegardé',
              @DEST1='MC',@TEVCODE1='To'
GO
P_MESSAGE_SEND
GO
P_MESSAGE_SET @TITRE='[SRV_OK] Sauvegarde_Journal_DATAMEAL_OK',  
              @TEXTE='Le journal des transactions DATAMEAL a correctement été sauvegardé',
              @DEST1='TV',@TEVCODE1='To'
GO
P_MESSAGE_SEND
GO
P_MESSAGE_SET @TITRE='[SRV_OK] Sauvegarde_Journal_DATAMEAL_OK',  
              @TEXTE='Le journal des transactions DATAMEAL a correctement été sauvegardé',
              @DEST1='ST',@TEVCODE1='To'
GO
P_MESSAGE_SEND
GO
P_MESSAGE_SET @TITRE='[SRV_OK] Sauvegarde_Journal_DATAMEAL_OK',  
              @TEXTE='Le journal des transactions DATAMEAL a correctement été sauvegardé',
              @DEST1='CB',@TEVCODE1='To'
GO
P_MESSAGE_SEND
GO
P_MESSAGE_SET @TITRE='[SRV_OK] Sauvegarde_Journal_DATAMEAL_OK',  
              @TEXTE='Le journal des transactions DATAMEAL a correctement été sauvegardé',
              @DEST1='YS',@TEVCODE1='To'
GO
 
P_MESSAGE_SEND
 
GO

ETAPE ECHEC :
Code :
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
USE DB_SENDMAIL
 
GO
P_MESSAGE_SET @TITRE='[SRV_ECHEC] Sauvegarde_Journal_DATAMEAL_ECHEC!',  
              @TEXTE='Une erreur a été détectée lors de la sauvegarde du journal des transactions DATAMEAL',
              @DEST1='MC',@TEVCODE1='To'
GO
P_MESSAGE_SEND
GO
P_MESSAGE_SET @TITRE='[SRV_ECHEC] Sauvegarde_Journal_DATAMEAL_ECHEC!',  
              @TEXTE='Une erreur a été détectée lors de la sauvegarde du journal des transactions DATAMEAL',
              @DEST1='TV',@TEVCODE1='To'
GO
P_MESSAGE_SEND
GO
P_MESSAGE_SET @TITRE='[SRV_ECHEC] Sauvegarde_Journal_DATAMEAL_ECHEC!',  
              @TEXTE='Une erreur a été détectée lors de la sauvegarde du journal des transactions DATAMEAL',
              @DEST1='TS',@TEVCODE1='To'
GO
P_MESSAGE_SEND
GO
P_MESSAGE_SET @TITRE='[SRV_ECHEC] Sauvegarde_Journal_DATAMEAL_ECHEC!',  
              @TEXTE='Une erreur a été détectée lors de la sauvegarde du journal des transactions DATAMEAL',
              @DEST1='CB',@TEVCODE1='To'
GO
P_MESSAGE_SEND
GO
P_MESSAGE_SET @TITRE='[SRV_ECHEC] Sauvegarde_Journal_DATAMEAL_ECHEC!',  
              @TEXTE='Une erreur a été détectée lors de la sauvegarde du journal des transactions DATAMEAL',
              @DEST1='YS',@TEVCODE1='To'
GO
 
P_MESSAGE_SEND
 
GO
A 16h00 tous mes journaux ont été sauvegardé.
Cependant dans l'envoi des MAIL c'est la mouise.

Je m'explique.
Moi par exemple je n'ai reçu qu'un mail alors que j'aurai du en recevoir 5.
Mes collègues en ont 5 mais dont 2 ce sont des doublons ....

Je vous ai fais des captures d'écran des tâbles


Tâble T_MESSAGE_MSG :




Tâble T_ENVOI_EVO :




Tâble T_DESTINATAIRE_DST :




J'ai comparé les enregistrement entre ces tâbles et je ne comprend pas pourquoi moi je recois que 1 seul MAIL et que j'ai des collègues qui recoivent des MAIL en doublon (même si j'ai des MAIL en failed dans la tâble T_MESSAGE_MSG).

Merci d'avance pour votre aide,

.Matt
GarsDuCalvados est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 21h33   #11
Membre du Club
 
Inscription : octobre 2006
Messages : 386
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 386
Points : 65
Points : 65
SVP quelqu'un pour m'aider?

J'essaye de faire des TEST de mon coté mais je perd des mail et des destinataire recoivent des mails en doublon.

Merci à vous,

.Matt
GarsDuCalvados est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h18.


 
 
 
 
Partenaires

Hébergement Web