SQLServer -> 发邮件功能

sql自动发送邮件(sql计划任务功能)

利用SQLServer数据库发送邮件 - 毒逆天 - 博客园

简洁参考

sql自动发邮件功能_灵感来自小西装-CSDN博客_sql发邮件

案例参考

延伸

1.数据库作业(数据库定时任务)

Sql server数据库定时任务,数据库作业,数据库定时任务 - 得意洋洋~ - 博客园

2.邮件中添加html内容

注:发送body里面的内容参考 html==网页js形式 text文本格式

使用SQL SERVER 来自动发送邮件 - Fluent - 博客园

3.数据库邮件配置教程

https://jingyan.baidu.com/article/c1a3101e50f4a5de656debff.html

4.定时保存excel

注:导出excel的存储过程,利用sql的定时任务实现定时保存excel

https://jingyan.baidu.com/article/e75aca857d2c7e142edac619.html

附件参考(【sql server邮件】sql server如何把查询结果发邮件出去)

【sql server邮件】sql server如何把查询结果发邮件出去 - 郭大侠1 - 博客园

定时保存excel的存储过程

导出excel的存储过程,利用sql的定时任务实现定时保存excel


USE [Leyard]
GO
/****** Object:  StoredProcedure [dbo].[pr_Dept_Bak]    Script Date: 06/16/2019 17:08:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[pr_Dept_Bak]

as
begin
---这里可以增加对数据表的查询条件或更多的数据处理;
---将结果放入一个新的数据表,然后将这个新表导出EXCEL文件;
declare @file_path varchar(200);--导出EXCEl文件的路径;
declare @file_name varchar(200);--导出EXCEl的文件名;
declare @exec_sql  varchar(200);--SQL语句;
---分开定义是为了以后修改路径或文件名更方便。
set @file_path = 'D:\exceautosendl\'
set @file_name = '未发货项目信息' + CONVERT(varchar(100), GETDATE(), 112)+'.xls'
--set @file_name = '未发货项目信息.xls'
set @exec_sql = 'select PId,PName,ReqDate,RealDate,status from [Leyard].[dbo].[ProductOrder] where SendDate is null and Status in (''待发货'',''已发货'')'  ---数据表使用的完整路径;
set @exec_sql = ' bcp "'+@exec_sql+'" queryout "'+@file_path+''+@file_name+'" -c -T -U "sa" -P "SQLpassword"';
----U "sa" -P "SQLpassword" 这是数据库的sa账号和密码;
exec master..xp_cmdshell @exec_sql
end

---------------------------------------------------------------------------------------------------------------------------------

案例1:

declare @tableHTML varchar(max)

SET @tableHTML =

N'<style>

table { width:100%;}

table, th, td {
border: 1px solid black;border-collapse: collapse;}

th, td {padding: 5px;text-align: left;}

th { background-color:#4682B4;

font-size:12.0pt;font-weight:bold;

font-family:Arial ,sans-serif;

color :#ffffff;}

 tr { font-size:8.0pt;font-family:Arial,sans-serif;}'+

N'</style><H1 style="text-align:center">项目信息</H1>'+

N'<table align="center">'+

N'<tr><th width=20%" >项目号</th>'+

N'<th width=20%>项目名称</th><th width=20%>状态</th><th width=20%>要求完成时间</th><th width=20%>实际完成时间</th>'+
N'</tr>'+
CAST((
select 
td=a.PId,'',
td=a.PName,'',
td=a.Status,'',
td=a.ReqDate,'',
td=a.RealDate,''
FROM [Leyard].[dbo].[ProductOrder] a where SendDate is null and Status in ('待发货','已发货') order by PId

FOR XML PATH('tr'),TYPE

)AS NVARCHAR(MAX))+


N'</table>';
declare @a1 varchar(max)
--set @a1='D:\exceautosendl\未发货项目信息' + CONVERT(varchar(100), GETDATE(), 112)+'.xls'
set @a1='D:\exceautosendl\未发货项目信息20190616.xls'
Exec dbo.sp_send_dbmail
@profile_name='my',
@recipients ='11@qq.com',
@copy_recipients='11@qq.com',
@subject='未发货项目信息',
@body=@tableHTML,
@body_format ='HTML';
--@query='select PId,PName,Status,ReqDate,RealDate FROM [Leyard].[dbo].[ProductOrder] where SendDate is null and Status in (''待发货'',''已发货'') order by PId', --查询
--@attach_query_result_as_file=1,  --是否以附件发送
--@query_attachment_filename=@a1;  --附件文件名

问题

1.SQL Server阻止了对组件xp_cmdshell的过程

https://jingyan.baidu.com/article/e75aca857d2c7e142edac619.html

2.消息 14607,级别 16,状态 1,过程 sysmail_verify_profile_sp,第 42 行 profile 名称无效 [问题点
@profile_name  要一致

消息 14607,级别 16,状态 1,过程 sysmail_verify_profile_sp,第 42 行 profile 名称无效 -CSDN论坛a

3.怎么启动sqlserver代理服务

https://jingyan.baidu.com/article/eb9f7b6d4efa61869264e840.html

winform程序邮件定时发送

string ss = System.DateTime.Now. ToString ("t");//可以放进timer里每秒刷新一次
if (ss == "15:35")//时间你定
{
//写出发邮件的方法,

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SQL Server中,可以使用数据库邮件功能来触发事件并发送电子邮件。以下是一个简单的示例来演示如何在SQL Server中配置和使用数据库邮件来触发事件并发送电子邮件。 首先,确保已经在SQL Server中启用了数据库邮件功能,并且已经配置了SMTP服务器和电子邮件帐户。可以参考引用中提供的链接来了解如何配置数据库邮件。 接下来,可以使用以下步骤来创建一个触发器,当满足特定条件时触发并发送电子邮件: 1. 创建一个触发器: ```sql CREATE TRIGGER [dbo].[TriggerName] ON [dbo].[TableName] AFTER INSERT, UPDATE, DELETE -- 根据需要选择触发的事件类型 AS BEGIN -- 在此处编写触发器的逻辑 -- 检查触发条件 IF (/* 触发条件 */) BEGIN -- 发送电子邮件 EXEC msdb.dbo.sp_send_dbmail @profile_name = 'ProfileName', -- 配置的数据库邮件配置文件名称 @recipients = 'recipient@example.com', -- 收件人电子邮件地址 @subject = 'Email Subject', -- 邮件主题 @body = 'Email Body'; -- 邮件正文 END END ``` 2. 替换触发器名称(TriggerName)和表名(TableName)为实际的触发器名称和表名。 3. 在触发器的逻辑中,根据需要编写触发条件。只有当满足触发条件时,才会发送电子邮件。 4. 在发送电子邮件的部分,替换配置的数据库邮件配置文件名称(ProfileName)、收件人电子邮件地址(recipient@example.com)、邮件主题(Email Subject)和邮件正文(Email Body)为实际的值。 5. 保存并激活触发器。 请注意,触发器是在数据库中定义的对象,它会在指定的事件发生时自动触发。因此,当满足触发条件时,触发器将发送电子邮件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fyhs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值