gpt4 book ai didi

sql-server - sql server sp_send_dbmail

转载 作者:行者123 更新时间:2023-12-04 00:07:22 31 4
gpt4 key购买 nike

我正在使用 SQL Server 的 sp_send_dbmail 存储过程通过数据库发送邮件。

但是当我执行该程序时,它会关闭数据库邮件程序。我尝试通过 sysmail_start_sp 再次启动它。但它会在 7-8 秒后再次关闭。

我尝试了以下代码:

EXEC msdb..sp_send_dbmail @profile_name = 'Test',
@recipients = 'abc@gmail.com',
@subject = 'test mail',
@body_format = 'HTML',
@body = 'test mail',
@from_address = 'xyz@yahoo.com'

当我试图检查错误日志时,我发现了以下错误:

Message:

The read on the database failed. Reason: The error description is 'Whitespace is not allowed at this location.'.Data: System.Collections.ListDictionaryInternalTargetSite: Microsoft.SqlServer.Management.SqlIMail.Server.Objects.QueueItem GetQueueItemFromCommand(System.Data.SqlClient.SqlCommand)HelpLink: NULLSource: DatabaseMailEngineStackTrace Information===================

当我检查 sql 电子邮件日志历史时,我发现了这个错误:

Mail not queued. Database Mail is stopped. Use sysmail_start_sp to start Database Mail.

最佳答案

每当您尝试从数据库邮件发送测试邮件时;它抛出以下错误消息:

Msg 14641, Level 16, State 1, Procedure sp_send_dbmail, Mail not queued. Database Mail is stopped. Use sysmail_start_sp to start Database Mail.


  1. 首先确保通过在 SSMS 中执行以下命令来启用数据库中的 Service Broker 消息传递:

    SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb'

    如果上述查询结果为0,则激活服务代理。

    激活 Service Broker 允许将消息传递到数据库。必须创建一个 Service Broker 端点来发送和接收来自实异常(exception)部的消息。

    要在数据库中激活 Service Broker,请使用以下命令:

    USE master ;
    GO

    ALTER DATABASE DatabaseName SET ENABLE_BROKER ;
    GO
  2. 如果启用了 Service Broker,则通过在 SQL Server Management Studio 中执行以下查询来确认是否启用了数据库邮件:

    sp_configure 'show advanced', 1
    GO

    RECONFIGURE
    GO

    sp_configure
    GO

    如果结果集显示 run_value 为 1,则启用数据库邮件。

  3. 如果数据库邮件选项被禁用,则运行以下查询以启用它:

    sp_configure 'Database Mail XPs', 1; 
    GO

    RECONFIGURE;
    GO

    sp_configure 'show advanced', 0;
    GO

    RECONFIGURE;
    GO
  4. 一旦启用数据库邮件,然后启动数据库邮件外部程序,在 msdb 数据库上使用下面提到的查询:

    USE msdb ;       
    EXEC msdb.dbo.sysmail_start_sp;
  5. 要确认数据库邮件外部程序已启动,请运行下面提到的查询:

    EXEC msdb.dbo.sysmail_help_status_sp;
  6. 如果数据库邮件外部程序已启动,则使用以下语句检查邮件队列的状态:

    EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail';

关于sql-server - sql server sp_send_dbmail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32722006/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com