Friday, October 22, 2010

Aviser DDL modifications dans la base de données MSSQL par courrier électronique.


CREATE PROCEDURE [dbo].[SendMail]
(

@ Sujet comme varchar(2000),
Corps @ varchar(8000)
)
COMME

COMMENCER
/ * Définir l'adresse si nécessaire * /
Déclarer de @ varchar(1000)
la valeur de @ = ''

déclarer À @ varchar(1000)
déclarer @ CC comme varchar(1000)

/ * Définir l'adresse À * /
Définissez @ À = ''
Définissez @ CC = ''

déclarer @ MailServerName VARCHAR(100)
--Tous le Courriel définir les propriétés de serveur
Définissez @ MailServerName =''

déclarer la valeur BodyType @ varchar(100) @ BodyType = « HTMLBODY »
déclarer la valeur @ cSendUsing char(1) @ cSendUsing = « 2 »
déclarer la valeur @ vcPort varchar(3) @ vcPort = « 25 »
déclarer la valeur @ cAuthenticate char(1) @ cAuthenticate = « 1 »--initialement = 1
déclarer la valeur @ vcDSNOptions varchar(2) @ vcDSNOptions = « 0 »
déclarer la valeur @ vcTimeout varchar(2) @ vcTimeout = "30"
déclarer la valeur @ vcSenderName varchar(128) @ vcSenderName =''
déclarer la valeur @ vcSenderPassword varchar(128) @ vcSenderPassword =''
déclarer @ vcServerName sysname
Définissez @ vcServerName = null

--COMME

DÉCLARE datetime @ CurrDate
DECLARE @ iMsg int
DECLARE @ hr int
DÉCLARER la source @ @FullText
DÉCLARER la description @ varchar(500)
DÉCLARER la sortie @ varchar(1000)

Déclarer @FullText @ vcErrMssg
Déclarer @FullText @ vcErrSource
Déclarer @FullText @ vcErrDescription

--Créer l'objet du message
EXEC @ hr = sp_OACreate « CDO.Message », @ iMsg OUT
EXEC @ hr = sp_OASetProperty @iMsg,'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value', @ cSendUsing
EXEC @ hr = sp_OASetProperty @iMsg,'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', @ MailServerName
EXEC @ hr = sp_OASetProperty @ iMsg, 'Configuration.Fields ("http://schemas.microsoft.com/cdo/configuration/SMTPServerPort") .Value', @ vcPort
EXEC @ hr = sp_OASetProperty @ iMsg, ' Configuration.Fields ("http://schemas.microsoft.com/cdo/configuration/SMTPConnectionTimeout") .Value',@vcTimeout
EXEC @ hr = sp_OASetProperty @ iMsg, 'Configuration.Fields ("http://schemas.microsoft.com/cdo/configuration/SMTPUseSSL") .Value', 'False'
EXEC @ hr = sp_OASetProperty @ iMsg, 'Configuration.Fields ("http://schemas.microsoft.com/cdo/configuration/SMTPAuthenticate") .Value', '0'
EXEC @ hr = sp_OASetProperty @ iMsg, 'Configuration.fields ("http://schemas.microsoft.com/cdo/configuration/sendusername") .Value', @ vcSenderName
EXEC @ hr = sp_OASetProperty @ iMsg, 'Configuration.fields ("http://schemas.microsoft.com/cdo/configuration/sendpassword") .Value', @ vcSenderPassword

EXEC @ hr = sp_OAMethod @ iMsg, « Configuration.Fields.Update »

--EXEC @ hr = sp_OAMethod @ iMsg, « Configuration.Fields.Update », null
EXEC @ hr = sp_OASetProperty @ iMsg, « To », @ À
EXEC @ hr = sp_OASetProperty @ iMsg, « De », @ de
EXEC @ hr = sp_OASetProperty « CC », @ iMsg, @ CC
EXEC @ hr = sp_OASetProperty @ iMsg, « Subject », @ objet

--TextBody
EXEC @ hr = sp_OASetProperty @ iMsg, @ BodyType, @ Body

EXEC @ hr = sp_OAMethod @ iMsg, « Envoyer »--, NULL

Si @ hr <> 0
Commencer
Définissez @ vcErrMssg = « Erreur envoi Courriel. »
GoTo ErrMssg
Fin
Autre
Imprimer « Mail envoyé. »

ErrMssg :
Commencer
Impression @ vcErrMssg
Si @ hr <> 0
Commencer
EXEC sp_OAGetErrorInfo @ iMsg, @ vcErrSource out, @ vcErrDescription out
Impression @ hr
Impression @ vcErrSource
Impression @ vcErrDescription
Fin
--Déterminer s'il existe ou aller de nettoyage.
Si @ vcErrMssg = « CDO.Message objet création d'erreur. »
Retour
Autre
Goto Cleanup
Fin

Nettoyage :
--Certaines erreurs après chaque étape si vous devez le faire.
--Nettoyer les objets créés.
EXEC @ hr = sp_OADestroy @ iMsg

FIN

ALLER

No comments:

Post a Comment