当前位置:   article > 正文

sqlserver配置定时任务查询SQL导出excel并以附件发送邮件_sql server定时发送邮件

sql server定时发送邮件

参考了站内这篇文章

sqlserver配置定时任务查询SQL导出excel并以附件发送邮件_柠檬--lemon的博客-CSDN博客_sqlserver 查询结果 发送邮件

细化邮件配置的内容

  1. --创建存储过程【执行一次】(修改 Alter procedure [dbo].[pr_Employee_Bak]。。。)
  2. Create procedure [dbo].[TESTEXCEL]
  3. as
  4. begin
  5. ---这里可以增加对数据表的查询条件或更多的数据处理;
  6. ---将结果放入一个新的数据表,然后将这个新表导出EXCEL文件;
  7. declare @file_path varchar(200);--导出EXCEl文件的路径;
  8. declare @file_name varchar(200);--导出EXCEl的文件名;
  9. declare @exec_sql varchar(200);--SQL语句;
  10. declare @file_pathname varchar(200);--导出EXCEl的文件名;
  11. ---分开定义是为了以后修改路径或文件名更方便。
  12. set @file_path = 'D:\TEST\'
  13. set @file_name = 'dept' + CONVERT(varchar(100), GETDATE(), 112)+'.xls'
  14. set @file_pathname = @file_path+@file_name
  15. set @exec_sql = 'SELECT SUBINV_CODE FROM scbi.dbo.DW_DIM_SUBINV' ---数据表使用的完整路径;
  16. -- instructions_test:数据库; employee:表名
  17. set @exec_sql = ' bcp "'+@exec_sql+'" queryout "'+@file_path+''+@file_name+'" -c -T -U "sa" -P "hz.123456"';
  18. --PRINT @exec_sql
  19. ----通过bcp将查询结果导出为excel:U "sa" -P "SQLpassword" 这是数据库的sa账号和密码;
  20. EXEC master..xp_cmdshell @exec_sql
  21. --配置邮件发送程序
  22. DECLARE @ACCOUNT_ID INT,@ACCOUNT_NAME NVARCHAR(200),@EMAIL_ADDR NVARCHAR(MAX),@ITEM NVARCHAR(200)
  23. --创建邮件帐户信息
  24. SET @ACCOUNT_NAME = 'TEST'
  25. SELECT @ACCOUNT_ID = ACCOUNT_ID FROM MSDB..SYSMAIL_ACCOUNT WHERE NAME=@ACCOUNT_NAME
  26. IF (@ACCOUNT_ID IS NOT NULL)
  27. BEGIN
  28. EXEC MSDB.DBO.SYSMAIL_DELETE_ACCOUNT_SP @ACCOUNT_ID, @ACCOUNT_NAME
  29. END
  30. EXEC MSDB.DBO.SYSMAIL_ADD_ACCOUNT_SP
  31. @ACCOUNT_NAME = @ACCOUNT_NAME, -- 邮件帐户名称
  32. @EMAIL_ADDRESS = '', -- 发件人邮件地址
  33. @DISPLAY_NAME = '系统管理员', -- 发件人姓名
  34. @REPLYTO_ADDRESS = NULL,
  35. @DESCRIPTION = 'TEST',
  36. @MAILSERVER_NAME = 'mail.unicloud.com', -- 邮箱服务器地址
  37. @PORT = 587, -- 邮箱服务器端口
  38. @USERNAME = '', -- 邮箱用户名
  39. @PASSWORD = '', -- 邮箱密码
  40. @USE_DEFAULT_CREDENTIALS = 0,
  41. @ENABLE_SSL = 0
  42. --数据库配置文件
  43. IF EXISTS( SELECT 1 FROM MSDB.DBO.SYSMAIL_PROFILE WHERE NAME = N'TEST')
  44. BEGIN
  45. EXEC MSDB.DBO.SYSMAIL_DELETE_PROFILE_SP @PROFILE_NAME = 'TEST'
  46. END
  47. EXEC MSDB.DBO.SYSMAIL_ADD_PROFILE_SP
  48. @PROFILE_NAME = 'TEST', -- profile 名称
  49. @DESCRIPTION = '数据库邮件配置文件' -- profile 描述
  50. --用户和邮件配置文件相关联
  51. EXEC MSDB.DBO.SYSMAIL_ADD_PROFILEACCOUNT_SP
  52. @PROFILE_NAME = 'TEST', -- PROFILE 名称
  53. @ACCOUNT_NAME = 'TEST', -- ACCOUNT 名称
  54. @SEQUENCE_NUMBER = 1 -- ACCOUNT 在 PROFILE 中顺序
  55. --配置发送对象
  56. SELECT @EMAIL_ADDR='xxxxx@xxxxxx.com'
  57. SET @ITEM='TEST'
  58. EXEC MSDB.DBO.SP_SEND_DBMAIL
  59. @PROFILE_NAME = 'TEST', --配置名称
  60. @RECIPIENTS =@EMAIL_ADDR, --接收邮件地址列表,可以多个,中间以分号分隔
  61. @SUBJECT = @ITEM, --邮件主题
  62. @file_attachments = @file_pathname, --附件
  63. @body_format = 'HTML'
  64. end

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/591734
推荐阅读
相关标签
  

闽ICP备14008679号