标签: database-mail

如何查看当前的数据库邮件配置?

我们的 SQL Server (2008) 实例配置为发送邮件并且一切正常,但我不知道如何查看现有配置,尤其是 SMTP 服务器。

从 SSMS 我只能启动配置向导,我在网上找不到任何东西 - 关于如何设置它的大量信息,但没有关于如何查看当前设置的信息。

如何查看现有设置?

sql-server database-mail

51
推荐指数
3
解决办法
13万
查看次数

SQL Server 2016 DB 邮件未发送

我在 SQL Server 2016 上玩得很开心……我的数据库邮件没有发送,而且我已经没有地方可以查看了。我仔细检查了 DBmail 可执行文件的 SQL 帐户权限 - 它已读取并执行。我输入了防火墙出站端口 587 的规则。我尝试了另一个邮件帐户和配置文件,但遇到了相同的未发送问题。日志(db 邮件日志)中唯一的条目是服务的开始和结束。我能找到的任何地方都没有错误。电子邮件似乎只是进入发送队列,永远不会离开它。这些帐户可以自己发送和接收电子邮件,也可以从另一台计算机上的 SQL Server 2014 实例发送和接收电子邮件。

我有一个发送状态为“未发送”的项目队列,除了一长串未发送的邮件外,我还检查了所有正常位置和预期结果:

SELECT * FROM msdb..sysmail_event_log order by log_id DESC

SELECT * FROM dbo.sysmail_mailitems

SELECT * FROM dbo.sysmail_sentitems

USE msdb
SELECT sent_status, *
FROM sysmail_allitems

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

 EXECUTE msdb.dbo.sysmail_help_status_sp
Run Code Online (Sandbox Code Playgroud)

我曾尝试将其关闭并再次打开......所以我是否错过了可以阐明这种情况的 DMV 等?这是我搜索中没有的 SQL Server 2016 的已知问题吗?发送此邮件的任何其他可能步骤?

sql-server database-mail sql-server-2016

17
推荐指数
2
解决办法
6万
查看次数

sp_send_dbmail 存储过程随附件发送

我的任务是为我的一位客户发送一份小型月度报告。该报告以前在实例上手动运行,输出复制到电子表格并作为附件发送给客户。

我正在寻找一个更永久的解决方案,所以我打算使用 sp_send_dbmail存储过程来运行查询并将其作为附件发送。

一切正常,但消息的格式。最初我尝试将输出附加为带有 a 的 CSV 文件,@query_result_seperator = ','但结果无处不在!

当我正常运行报告时,输出在 SQL 中看起来不错。但是将其作为 CSV 发送或仅在消息正文中发送则不然。

我认为如果我将输出导出为 HTML 并作为附件/或 XML 发送它可能会更好,但我不知道如何执行此操作。

有没有人有什么建议?

提前致谢!

xml sql-server stored-procedures database-mail

15
推荐指数
2
解决办法
7万
查看次数

如何导出 sp_AskBrent 的输出?

我们有一个实例会随机尖峰 CPU。我想创建一个在 CPU 上触发超过 90% 的警报,并自动调用一个正在运行的作业sp_AskBrent并将输出通过电子邮件发送给我。但是,文本或 HTML 输出中的输出不可读。它甚至不适合 Excel 电子表格。如何以可读格式获取信息?

sql-server database-mail format sp-askbrent

11
推荐指数
1
解决办法
451
查看次数

服务帐号使用数据库邮件需要什么权限?

我有一个在托管服务帐户下运行的 SQL Server 2012 实例。我已经用一个帐户配置了数据库邮件,并试图发送一封测试电子邮件,但我在服务器的事件日志中收到了一些错误:

数据库引擎实例=MYINSTANCE;邮件PID=2132;错误消息:数据库更新失败。原因:对象“sysmail_logmailevent_sp”、数据库“msdb”、架构“dbo”上的 EXECUTE 权限被拒绝。

数据库引擎实例=MYINSTANCE;邮件PID=2212;异常类型:Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException 消息:数据库读取失败。原因:对象“sp_readrequest”、数据库“msdb”、架构“dbo”上的 EXECUTE 权限被拒绝。数据:System.Collections.ListDictionaryInternal TargetSite:Microsoft.SqlServer.Management.SqlIMail.Server.Objects.QueueItem GetQueueItemFromCommand(System.Data.SqlClient.SqlCommand) HelpLink:NULL 来源:DatabaseMailEngine

如果我将运行 SQL Server 进程的帐户设置为系统管理员,则此错误将消失,并且邮件发送成功。但是,我所做的所有研究都表明,赋予此帐户DatabaseMailUserRolemsdb数据库中的角色就足够了。我已经这样做了,但仍然收到相同的错误。

我查看了 BOL,但找不到任何东西。

sql-server permissions sql-server-2012 database-mail

10
推荐指数
1
解决办法
4010
查看次数

需要在 Sql Server 2008 R2 中通过数据库邮件发送格式化的 HTML 电子邮件

我的要求是将自动电子邮件创建为(通过数据库邮件格式化的 HTML 电子邮件)基本要求已经完成,当作业被触发时,它将数据插入到表中,并且该信息已被安排作为电子邮件发送,但现在客户已经以这种格式请求了。

我已经完成的当前格式

 PO Date:2014-11-26 PO ID:PO1 SAP Ref:0001106102 GRN:1067 DealerID:045 Dealer Name:ABC(Pvt)Ltd. 2 Status:New
Run Code Online (Sandbox Code Playgroud)

客户要求的格式为表格格式

PO Date |PO ID| SAP Ref| GRN|DealerID|Dealer Name|Status
Run Code Online (Sandbox Code Playgroud)

这是我用来将数据插入到 Email_Table(_ERROR_MAIL) 中的 SQL 查询,这需要根据要求进行觊觎

IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'ImpCancelledGRN')
BEGIN
    DROP PROCEDURE [dbo].[ImpCancelledGRN]
END
GO


CREATE PROCEDURE [dbo].[ImpCancelledGRN] 
WITH ENCRYPTION
AS

SET NOCOUNT ON
BEGIN
BEGIN TRY
    -- Begin transaction
    BEGIN TRAN

            INSERT INTO _ERROR_MAIL(Recipients, Subject, CreationDate, IsNew, LastModifiedBy, Body)
            SELECT 'noreply-Email@Adress.com', 'SAP CANCELLED GRN', …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2 database-mail

10
推荐指数
2
解决办法
9万
查看次数

sp_send_mail 的数据库权限问题

我正在尝试发送数据库邮件,但我收到EXECUTE permission denied on the object 'sp_send_dbmail' database 'msdb', schema 'dbo'.. 我正在运行的代码如下:

SELECT SUSER_NAME(), USER_NAME();
Create USER kyle_temp FOR LOGIN Foo
EXECUTE AS USER = 'kyle_temp';
SELECT SUSER_NAME(), USER_NAME();
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Mail Profile',
            @recipients = 'test@test.com',
            @subject = 'Test',
              @body = 'Test'
REVERT;
DROP USER kyle_temp
Run Code Online (Sandbox Code Playgroud)

Foo Login 显示它映射到 msdb 中的 Foo 用户。当我查看 msdb 中的 foo 用户时,我看到它已检查“DatabaseMailUserRole”并在 dbo 上执行sp_send_dbmail

我错过了什么?

sql-server sql-server-2008-r2 database-mail

9
推荐指数
1
解决办法
4988
查看次数

如何在 sql 代理作业中选择邮件配置文件

我在 sql 代理上配置了几个邮件配置文件,如何选择这些配置文件中的哪些用于发送特定 sql 代理作业的通知?

sql-server-2012 database-mail

9
推荐指数
2
解决办法
1万
查看次数

为 SQL Server 2016 数据库邮件启用 TLS 1.2

我对这个问题困惑了将近 1 周。希望我们社区中有人遇到过同样的问题并且已经找到了解决方案。

所以这是我的问题:

根据我们公司的政策,我们希望数据库邮件能够在启用 TLS 1.2 和禁用 TLS 1.0 和 TLS 1.1 的情况下通过端口 25 发送电子邮件。

我们的邮件服务器是 Exchange Server 2010,我们的 SQL Server 2016(开发者和企业版)盒子有 Windows Server 2016 标准版的操作系统。

我们的 SQL Server 版本是:

select @@version
----------------------------------------
Microsoft SQL Server 2016 (SP1-CU7-GDR) (KB4057119) - 13.0.4466.4 (X64) 
    Dec 22 2017 11:25:00 
    Copyright (c) Microsoft Corporation
    Developer Edition (64-bit) on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393: ) (Hypervisor)
Run Code Online (Sandbox Code Playgroud)

我们有如下所示的 DB 邮件配置。

在此处输入图片说明

问题是每当我们打开 SSL

use msdb
exec dbo.sysmail_update_account_sp @account_id=2, @enable_ssl = 1;
Run Code Online (Sandbox Code Playgroud)

我们不能发送 db …

sql-server database-mail sql-server-2016 tls-1.2

8
推荐指数
3
解决办法
1万
查看次数

sp_send_dbmail 使用最佳实践

我想弄清楚 sp_send_dbmail 的最佳使用实践,但我在网上找不到任何答案。

我们的开发人员喜欢使用 sp_send_dbmail 从应用程序内部发送与应用程序相关的电子邮件。假设例如用户忘记了他们的密码,他们将通过执行 sp_send_dbmail 发送用户请求的密码重置电子邮件。这只是他们使用此存储过程发送的多种电子邮件类型之一。这是一个好习惯吗?对我来说,这感觉像是一个肮脏的解决方案,因为有许多 API 可以处理您的应用程序中的电子邮件发送,而作为 DBA,我不喜欢在生产服务器上启用这些选项。我只是别无选择。也许有足够的动机和证据证明这是不好的做法和/或由于各种原因有潜在危险,我可以动摇他们改变它。

sql-server database-mail

6
推荐指数
1
解决办法
1504
查看次数