是否有可能在从数据库查询后每分钟发送自动电子邮件
本文关键字:电子邮件 每分钟 有可能 数据库 查询 是否 | 更新日期: 2023-09-27 18:18:54
我想在从数据库查询后发送电子邮件警报(检查一些数据)。它应该每分钟都发生。有可能做到吗?如何?
是有可能的。为了使您能够发送电子邮件,您需要配置数据库邮件或SMTP服务器。有了这些组件,你可以随时发送电子邮件。
是,
您可以设置SQL Agent作业来执行查询并每分钟(或根据您指定的任何时间表)发送电子邮件。
SQL Agent Job reference:http://msdn.microsoft.com/en-us/library/ms175138.aspx
从数据库引用发送邮件:http://msdn.microsoft.com/en-us/library/ms190307.aspx
正如Paul所说,您需要确保您的环境配置为能够执行此操作(参见第二个链接的备注部分)
可以安排每分钟运行一次SQL Agent作业,以执行所需的T-SQL脚本。您可以考虑将代码封装在有条件地发送电子邮件(使用Database Mail)的存储过程中,然后在作业中执行该过程。在下面的例子。
CREATE PROC dbo.usp_check_for_alerts_and_send_email
AS
IF EXISTS(
SELECT * FROM dbo.AlertTable
)
BEGIN
EXECUTE msdb.dbo.sp_send_dbmail
@subject = 'Alert',
@recipients = 'testaddress@example.com',
@query = 'SELECT * FROM dbo.AlertTable';
END;
GO
下面是一个配置数据库邮件的示例脚本,如果您还没有这样做,您可以根据您的环境进行调整。
-- Enable Database Mail for this instance
EXECUTE sp_configure 'show advanced', 1;
RECONFIGURE;
EXECUTE sp_configure 'Database Mail XPs',1;
RECONFIGURE;
GO
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'Primary Account',
@description = 'Account used by all mail profiles.',
@email_address = 'myaddress@example.com',
@replyto_address = 'myaddress@example.com',
@display_name = 'Database Mail',
@mailserver_name = 'mail.example.com';
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'Default Public Profile',
@description = 'Default public profile for all users';
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'Default Public Profile',
@account_name = 'Primary Account',
@sequence_number = 1;
-- Grant access to the profile to all msdb database users
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'Default Public Profile',
@principal_name = 'public',
@is_default = 1;
GO
你想每天发送1,440封邮件??
都给一个人吗?你认为收件人多快会创建一个删除邮件规则?
一些isp可能会将您标记为垃圾邮件发送者并切断您的互联网/电子邮件访问。
当某些参数超出预期范围时,发送电子邮件是否更有意义?
是的,这是可以做到的,但应该这样做吗?