我已经使用SQL Server 2008 GUI在我的测试服务器上设置数据库邮件配置文件和帐户,现在我想将它们复制到我们的生产数据库中.
有没有办法生成一个脚本来做到这一点?
我在工作失败时发送通知时遇到问题.我创建了数据库邮件配置文件并将其分配给SQL代理和重新启动的SQL代理.当我运行程序时msdb.dbo.sp_send_dbmail
,正在发送电子邮件.此外,当我使用数据库邮件发送测试电子邮件时,它工作正常.但是当我在Job失败时设置通知时,在作业日志中我看到以下信息:注意:无法通过电子邮件通知"SQL作业失败".
我不知道这个问题的根源是什么.我发现这个提示:http://sqlblog.jfperry.com/jpsql/post/2009/04/07/NOTE-Failed-to-notify-7boperator7d-via-email.aspx
但我检查了在SQL Agent中启用了配置文件.SQL Agent已重新启动.哪里可以成为问题的根源?
我在午夜运行的SQL Server 2008 R2下有一个维护计划.在此维护任务中,没有通知操作员任务.在执行维护计划的SQL代理作业中,没有电子邮件警报.但是,每次运行此作业时,我都会收到来自SQL Server的主题为"SQL Server消息"的电子邮件.我无法理解为什么这封邮件不断发送.这是邮件正文开头的内容:
Microsoft(R)服务器维护实用程序(Unicode)版本10.50.1617报告是在"SERVERNAME"上生成的.维护计划:我的维护计划持续时间:00:01:02状态:成功.细节:
任何想法为什么这个邮件发送,我应该更新配置,以便它只发送失败或根本不发送?
sql-server database-mail sql-server-2008 maintenance-plan sql-agent-job
我想知道如何在SQL Server中设置权限,以允许我的应用程序登录/角色能够使用发送电子邮件msdb.dbo.sp_send_dbmail
.
我有一个数据库MyDb,一个MyUser
角色成员的用户AppRole
.我有一个myProc
调用的存储过程msdb.dbo.sp_send_dbmail
.如果我myProc
在登录时执行,因为sa
它一切正常,但如果我在登录时执行,因为MyUser
我收到错误:
消息229,级别14,状态5,过程sp_send_dbmail,行1
对象'sp_send_dbmail',数据库'msdb',架构'dbo'上的EXECUTE权限被拒绝.
我的数据库没有TRUSTWORTHY ON,因此我认为我不能使用EXECUTE AS来模仿其他用户,例如使用EXECUTE AS OWNER创建myProc ...(MSDN参考)
因此,我认为我需要让我的用户也是msdb中的用户,但是我可以在角色级别执行此操作,还是需要使我的每个数据库用户也是msdb中的用户?
我正在使用的数据库邮件配置文件设置为public,因此我认为这与配置文件权限无关.
sql-server sql-server-2005 database-permissions database-mail
我正在使用64位的MS SQL Server 2008 R2 SP2 Express版.我无法访问数据库邮件设置向导,但Binn目录包含DatabaseMail.exe(v10.50.16600.1)和DatabaseMailengine.dll.
我发现了几个引用"无法发送邮件到邮件服务器",但没有什么用于烦人的通用"发送邮件失败"消息.
我的具体问题是,在哪里可以找出错误信息的含义/原因是什么?如果某种善良的人会想要猜测发生了什么,或者没有继续下去,我会很感激.
来自数据库的设置信息如下:
执行sp_configure'show advanced'
name minimum maximum config_value run_value
show advanced options 0 1 1 1
Run Code Online (Sandbox Code Playgroud)
执行sp_configure'Database Mail XPs'
name minimum maximum config_value run_value
Database Mail XPs 0 1 1 1
Run Code Online (Sandbox Code Playgroud)
sysmail_server
account_id servertype servername port username credential_id use_default_credentials enable_ssl flags timeout last_mod_datetime last_mod_user
1 SMTP smtp.gmail.com 465 sqlmail@domain.com 65536 0 1 0 NULL 2015-11-23 09:34:26.913 WSCORP\username
Run Code Online (Sandbox Code Playgroud)
sys.credentials
credential_id name credential_identity create_date modify_date target_type target_id
65536 F05ADE33-6AA8-45FC-8FF5-A7631831ECB1 sqlmail@domain.com 2015-11-23 09:34:26.913 2015-11-23 09:34:26.913 …
Run Code Online (Sandbox Code Playgroud) 我们的一个问题是我们的出站电子邮件服务器有时很糟糕.用户将在我们的应用程序中触发电子邮件,并且应用程序可能需要大约30秒才能实际发送.让我们更糟糕,并承认我们甚至没有在后台线程上这样做,所以在这段时间内用户完全被阻止.SQL Server数据库邮件已被提议作为此问题的解决方案,因为它基本上实现了一个消息队列,并且比我们的第三方电子邮件主机更接近,响应更快.对我们来说,这也很容易实现,因为它只是将一个调用替换SmtpClient.Send
为执行存储过程.我们的大部分应用程序电子邮件都包含PDF,XLS等,我看到这些附件的大小高达20MB.
使用数据库邮件处理我们所有的应用程序电子邮件对我来说都不好,但由于实施成本极低,我很难说出任何人.我们的生产数据库服务器功能太强大,所以我不确定它是否也无法处理负载.任何想法或更安全的替代品?
最初,当我尝试查询我需要创建的报告的内容时,我收到了"无SELECT权限"错误.所以我们DatabaseMailUserRole
在MSDB中授予了我的帐户 - 我看到了列,但没有一个我们知道存在的数据.
我缺少什么需要为我的帐户查看数据?
我正在使用 SQL Server 2017,尝试配置数据库邮件。如果我使用 smtp.gmail.com 数据库邮件工作正常。但是,客户端正在使用 smtp.office365.com,我无法让它工作。我得到的错误是:
由于邮件服务器故障,邮件无法发送给收件人。”
我知道我正在传递工作的凭据/配置信息,因为我有一个 C# 应用程序,可以使用相同的信息发送电子邮件。对于我正在使用的数据库邮件配置:
Basic Authentication
PORT = 587
Use SSL = True
Server Name = smtp.office365.com
Run Code Online (Sandbox Code Playgroud)
..是的,我用于身份验证的“用户名”-确实与“电子邮件地址”条目匹配。
有人知道为什么 smtp.office365.com 在数据库邮件中不起作用吗?
另一条注释 - 每隔一段时间它就会起作用 - 我只是在大多数时间无法让它起作用。
我有一个SQL Server数据库,它在几个ASP.NET(VB.NET)网站之间共享,数据库有一个存储客户查询的表 - 我希望提供电子邮件通知,通知新的查询以解决组织内部的人员(可能将一些查询数据放入电子邮件正文中).请问有人可以根据如何实施这些方案来概述我的选择吗?
我的想法是:
选项3似乎是可取的,因为我知道如何在VB.NET中这样做,这是微不足道的.
任何帮助非常欢迎!谢谢.
t-sql sql-server stored-procedures database-mail clrstoredprocedure
是否可以从sql server触发器使用powershell"Send-MailMessage -SMTPServer"命令?
我正在尝试在数据库更新中的行或创建新行时发送电子邮件.由于安全限制,我无法使用数据库邮件.但是,我可以通过powershell的Send-MailMessage命令发送电子邮件.
我为sysadmin准备了脚本,用于创建和配置数据库邮件配置文件,帐户和操作员.他运行脚本,所以我创建了临时工作,但失败了.然后我在作业失败时设置电子邮件通知.我运行Job,但没有发送电子邮件.然后我尝试运行msdb.dbo.sp_send_dbmail
程序,使用相同的操作员,我收到了电子邮件.当作业失败时,不发送电子邮件的原因是什么?如果在作业失败时使用电子邮件通知正在运行哪个程序 - 它是否与sp_send_dbmail
?不同?
另一件事是在数据库邮件日志中没有关于发送电子邮件状态的信息(它是空的) - 也许我没有权限看到日志?
我将配置文件设置为公共,正在运行dbo.sysmail_add_principalprofile_sp procedure
,但是当我尝试发送运行msdb.dbo.sp_send_dbmail
已记录为dbowner 的电子邮件时,我收到错误:EXECUTE权限被拒绝..为什么只有当我以用户身份登录时它才有效?
我正在使用SQL Server 2008.
这是一个T-SQL代码,我传递给sysadmin来创建和配置数据库邮件.
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'Mail Account',
@description = 'Mail account for administrative e-mail.',
@email_address = 'xx@xx.pl',
@display_name = 'Job failure notification',
@mailserver_name = 'xx.xx.xxx' ,
@username = 'aaa',
@password = 'xxx'
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'Database Mail Profile',
@description = 'Profile used for job failure …
Run Code Online (Sandbox Code Playgroud) SQL Server数据库邮件提供了很好的内置功能,如日志记录.我想用它来发送大量的电子邮件(数百万+)非常快(几百万/小时).
数据库邮件是否专为此类用途而设计,我是否可以通过此解决方案达到生产所需的性能?
database-mail ×12
sql-server ×8
email ×2
t-sql ×2
emailrelay ×1
powershell ×1
smtp ×1
sql ×1
triggers ×1