février
2008
Quelle beau sentiment que de recevoir un mail de bon matin vous apprenant qu’il y a eu des erreurs lors de la copie de tables de votre base de données ou qu’une procédure stockée de validation de chiffres, qui roule chaque soir, n’a pas trouvé de bons résultats
Bon, d’accord… Ce ne sont pas de si bonnes nouvelles… Mais le fait de le savoir (grace au mail) va surement nous aider à détecter le problème et le corriger avant que les utilisateurs viennent frapper à votre bureau avec la célèbre phrase : « euuuuuuu pourquoi ça marche pas ! »
Sql server propose un utilitaire d’evois de mail (Database Mail). La nouveauté avec les versions précédentes de SQL SERVER est qu’il n’est pas nécéssaire d’avoir un client Mail (Outlook) pour envoyer des mails (beaucoup plus pratique…). Ce billet vous montrera comment configurer DataBase Mail.
Préparation.
Tout d’abord, il faut activer le service Database Mail. Il suffit pour cela d’aller dans la « surface area configuration », puis dans « surface area configuration for features », ensuite séléctionner « database mail » et cocher la seule case qui existe Cette action va lancer le script suivant :
go
RECONFIGURE WITH OVERRIDE
go
Après cette étape, database mail est activé pour notre serveur et nous pouvons passer à la configuration.
Configuration.
Quatre étapes sont nécessaires : créer un compte utilisateur, créer un profil, ajouter le compte au profil et choisir les utilisateurs de msdb qui pourront accéder au profil (public, privé).
Ces étapes sont très facilement configurables depuis Management Studio, il suffit d’ouvrir le dossier « Management », séléctionner Database Mail, puis, avec le bouton droit, accéder au menu contextuel et à l’option « Configure database mail ».
Ces étapes peuvent également être fait par script de la manière suivante :
– Créer un compte utilisateur : voir les variables de la procédure stockée msdb.dbo.sysmail_add_account. En voici un exemple :
@account_name = 'monCompteMail',
@description = 'Compte Database Mail',
@email_address = 'moi@mondomain.com',
@display_name = 'MonCompte',
@username='username',
@password='password',
@mailserver_name = 'mail.mondomaine.com',
@port=25,
...
– Créer un profil de comptes mail :
@profile_name = 'ProfilMail',
@description = 'Profile pour utilisateurs de database mail'
– Assigner le compte au profil : cela se fait avec la procédure stockée msdb.dbo.sp_sysmail_add_profileaccount. Il vous est possible de voir les paramètres de chaque procédure stockée via le navigateur d’objets de Management Studio :
@profile_name = 'ProfilMail',
@account_name = 'monCompteMail',
@sequence_number = 1
Si l’on jette un oeil sur la documentation en ligne de SQL Server 2005, on trouvera que @sequence_number désigne l’ordre dans lequel sont triés les comptes dans le profil.
– Assigner le droit d’utilisation du profil à des utilisateurs : c’est bien beau ce qu’on à fait mais faudrait que les utilisateurs puissent utiliser le profil !! La procédure sysmail_add_principalprofil est la pour cela :
@profile_name = 'ProfilMail',
@principal_name = 'public',
@is_default = 1 ;
Ce qu’on fait ici, c’est dire que le profil que nous avons crée peut être utilisé par les utilisateurs appartenant au role ‘public’ pour la base de données MSDB. Nous aurions très bien pu spécifier un utilisateur particulier.
Envoyer un mail.
Le moment de vérité !!! exécutons le script suivant :
@subject = 'Test',
@body = 'MON PREMIER MESSAGE !!!!',
@body_format = 'HTML'
Si tout ce passe bien, vous recevrez votre mail avec le message attendu, sinon, les logs dans le event log de sql server vous permettront de déceler l’erreur et de la corriger. N’oubliez pas de libérer le port 25 pour l’envoi de mail depuis votre serveur, il m’est arrivé que le serveur de messagerie bloque tout simplement le mail…
Si nous regardons la doc de Sql Server : http://msdn2.microsoft.com/fr-fr/library/ms190307.aspx. Nous pouvons voir qu’il existe plusieurs paramètres pour exécuter et insérer une requête T-SQL dans le mail. Je nous invite à tester ces paramètres (je le ferais quand j’aurais un serveur SMTP…).
Note : il est possible de modifier les profiles, comptes de messagerie, etc avec les procédures stockées msdb.dbo.sysmail_update_XXX, voir la documentation de Sql Server 2005
Voila pour aujourd’hui ! On sait démarrer, configurer et utiliser database mail. Approfondissons nos connaissances maintenant