2008-11-11 4 views
1

Привет, я хочу отправить уведомление по электронной почте после проверки результата запроса, который вернет число строк в таблице. У кого-нибудь есть идеи, как я мог бы это сделать в SQL Server 2000 в 2005 году, я бы использовал план поддержки, но не уверен, как в 2000 году?Отправка оповещения по электронной почте в SQL Server 2000

ответ

0

Поскольку SQLMail настолько бесполезен для использования в реальном мире (MAPI и т. Д.), Мы закончили использование SQLAnswersMail, который очень мощный и простой в использовании.

1

Я сделал это несколько лет назад - поспешно адаптирован из статьи базы знаний MS. Я изменил параметры, которые будут жестко заданными переменными. Я удалил идентификационные имена серверов/адреса электронной почты и т. Д. И т. Д., Но вы должны уметь это выяснить!

CREATE PROCEDURE [DBO]. [Usp_SendSuccessMail] --Adapted из статьи Microsoft KnowledgeBase, 16 января 2006

-- @From varchar(100) , 
-- @To varchar(100) , 
    -- @Subject varchar(100)=" ", 
    [email protected] varchar(4000) =" " 
/********************************************************************* 

This stored procedure takes the parameters and sends an e-mail. 
All the mail configurations are hard-coded in the stored procedure. 
Comments are added to the stored procedure where necessary. 
References to the CDOSYS objects are at the following MSDN Web site: 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_messaging.asp 

***********************************************************************/ 
    AS 
    Declare @From varchar(100) --origninally passed as parameter above. We want to hard-code it. 
    Declare @To varchar(100) --origninally passed as parameter above. We want to hard-code it. 
    Declare @Subject varchar(100) --origninally passed as parameter above. We want to hard-code it. 
    Declare @Body varchar(4000) --origninally passed as parameter above. We want to hard-code it. 
    Declare @iMsg int 
    Declare @hr int 
    Declare @source varchar(255) 
    Declare @description varchar(500) 
    Declare @output varchar(1000) 
    Set @From = '[email protected]' 
    Set @To = '[email protected]' 
    Set @Subject = 'Whatever Subject You Want' 
    Set @Body = 'Some useful text' 


--************* Create the CDO.Message Object ************************ 
    EXEC @hr = sp_OACreate 'CDO.Message', @iMsg OUT 
    IF @hr <>0 BEGIN 
print 'sp_OACreate failed' 
    END 

--***************Configuring the Message Object ****************** 
-- This is to configure a remote SMTP server. 
-- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_schema_configuration_sendusing.asp 
    EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2' 
-- This is to configure the Server Name or IP address. 
-- Replace MailServerName by the name or IP of your SMTP Server. 
    EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', 'mail.xxxxxxxxxx.com' 
-- Save the configurations to the message object. 
    EXEC @hr = sp_OAMethod @iMsg, 'Configuration.Fields.Update', null 
-- Set the e-mail parameters. 
    EXEC @hr = sp_OASetProperty @iMsg, 'To', @To 
    EXEC @hr = sp_OASetProperty @iMsg, 'From', @From 
    EXEC @hr = sp_OASetProperty @iMsg, 'Subject', @Subject 
-- If you are using HTML e-mail, use 'HTMLBody' instead of 'TextBody'. 
    EXEC @hr = sp_OASetProperty @iMsg, 'TextBody', @Body 
    EXEC @hr = sp_OAMethod @iMsg, 'Send', NULL 
    IF @hr <>0 
    BEGIN 
     EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT 
     IF @hr = 0 
     BEGIN 
      SELECT @output = ' Source: ' + @source 
      PRINT @output 
      SELECT @output = ' Description: ' + @description 
      PRINT @output 
     END 

    END 

-- Do some error handling after each step if you have to. 
-- Clean up the objects created. 
    send_cdosysmail_cleanup: 
If (@iMsg IS NOT NULL) -- if @iMsg is NOT NULL then destroy it 
BEGIN 
    EXEC @hr=sp_OADestroy @iMsg 

END 
ELSE 
BEGIN 
    PRINT ' sp_OADestroy skipped because @iMsg is NULL.' 

     RETURN 
END 

GO

Смежные вопросы