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")//时间你定
{
//写出发邮件的方法,
}