SQLSERVER 数据库邮件发送以表格形式发送(存储过程内容发邮件)

SQLSERVER 数据库邮件发送以表格形式发送

直接开始不哔哔!

一、数据库配置(以图文展现)

1.以sa或者windows身份登录数据库

2.选择数据库管理下面的数据库邮件:

3.选择数据库邮件左击选择配置数据库邮件。

直接下一步

 

 这里我们选择通过执行以下任务来安装数据库邮件

 配置文件名称然后点击添加SMTP邮箱用户

 

 填写好以下信息

 

直接下一步下一步就可以了

 二、代码片段——发送邮件

 这边我是把存储过程执行通过邮件以表格的形式发送的‘

代码如下:

/*声明变量*/
declare @tableHTML NVARCHAR(max)
--设置问候词
set @tableHTML ='<html><body><table><tr><td><p><font color="#000080" size="3" face="Verdana">您好!</font></p><p style="margin-left:30px;"><font size="3" face="Verdana">价格:</font></p></td></tr><font color=" #d5d5d5">'
--<html><body><table><tr><td><p> <font color="#000080" size="3" face="Verdana">';
--set @tableHTML = @tableHTML+'</p><p style="margin-left:30px;">系统数据</p>'
--设置表头
set @tableHTML=@tableHTML
+'<tr><td><table border="1" style="border:1px solid #d5d5d5;border-collapse:collapse;border-spacing:0;margin-left:25px;margin-top:15px;"><tr style="height:25px;background-color: rgb(219, 240, 251);">
<th style="width:150px;">dd</th>
<th style="width:200px;">tt</th>
<th style="width:80px;">dd</th>   
<th style="width:100px;">dd</th>
<th style="width:100px;">dd</th>
<th style="width:100px;">dd</th>
<th style="width:100px;">rrr</th>';
CREATE TABLE #tNOOK_01 (id char(20), gys char(50),sl  char(50),ck  char(50),km  char(50),hj  char(50) ,pd  char(50) )
insert into #tNOOK_01  exec khpde_tangbing
--设置表体
set @tableHTML=@tableHTML+'<tr>'
    + CAST((SELECT 
        td = id, '',
        td = gys, '',
        td = sl, '',
        td = ck, '',
        td = km, '',
	            td = hj, '',
				td = pd, ''
        FROM  #tNOOK_01
  for xml path('tr'),type
  ) as NVARCHAR(max))
  +N'</table>'
EXEC msdb.dbo.sp_send_dbmail
  --@profile_name = '1170683823@qq.com', --定义好的sql server 邮箱账户名
  @recipients = 'dujun@shsongz.com', --需要发送邮件的账号,多个用;间隔,建议通过一个邮件组来管理需要发送的地址
  @body = @tableHTML,  -- 邮件正文
  @body_format   ='HTML',   --邮件格式 默认为TEXT 可以改成HTML
  @subject = '价格清单'  --邮件抬头
  @execute_query_database = '' , --查询的数据库 
  @query='SQL语句'--需要执行的查询
  

  drop table #tNOOK_01    --删除零时表

!!——测试可用

发送效果如下:

        只是截屏了表头:表体没有截图哦

下面是借鉴 msdb.dbo.sp_send_dbmail存储过程的使用参数。

@profile_name= ] 'profile_name'

发送邮件的配置文件的名称。profile_name 的类型为 sysname,默认值为 NULL。profile_name 必须是现有数据库邮件配置文件的名称。如果未指定 profile_name,则 sp_send_dbmail 使用当前用户的默认专用配置文件。如果该用户没有默认专用配置文件,sp_send_dbmail 会使用 msdb 数据库的默认公共配置文件。如果用户没有默认的专用配置文件,而且数据库也没有默认的公共配置文件,则必须指定 @profile_name

@recipients= ] 'recipients'

要向其发送邮件的电子邮件地址列表,以分号分隔。收件人列表的类型为 varchar(max)。虽然此参数是可选参数,但是必须至少指定 @recipients@copy_recipients 或 @blind_copy_recipients 中的一个,否则sp_send_dbmail 将返回错误。

@copy_recipients= ] 'copy_recipients'

要向其抄送邮件的电子邮件地址列表,以分号分隔。抄送件收件人列表的类型为 varchar(max)。虽然此参数是可选参数,但是必须至少指定 @recipients@copy_recipients 或 @blind_copy_recipients 中的一个,否则 sp_send_dbmail 将返回错误。

@blind_copy_recipients= ] 'blind_copy_recipients'

要向其密件抄送邮件的电子邮件地址列表,以分号分隔。密件副本收件人列表的类型为 varchar(max)。虽然此参数是可选参数,但是必须至少指定 @recipients@copy_recipients 或 @blind_copy_recipients 中的一个,否则 sp_send_dbmail 将返回错误。

@subject= ] 'subject'

电子邮件的主题。主题的类型为 nvarchar(255)。如果未指定主题,则默认为“SQL Server 消息”。

@body= ] 'body'

电子邮件的正文。邮件正文的类型为 nvarchar(max),默认值为 NULL。

@body_format= ] 'body_format'

邮件正文的格式。该参数的类型为 varchar(20),默认值为 NULL。如果已指定,则待发邮件的标头设置会指示邮件正文具有指定格式。该参数可能包含下列值之一:

  • TEXT
  • HTML

默认为 TEXT。

@importance= ] 'importance'

邮件的重要性。该参数的类型为 varchar(6)。该参数可能包含下列值之一:

  • Low
  • Normal
  • High

默认值为 Normal。

@sensitivity= ] 'sensitivity'

邮件的敏感度。该参数的类型为 varchar(12)。该参数可能包含下列值之一:

  • Normal
  • Personal
  • Private
  • Confidential

默认值为 Normal。

@file_attachments= ] 'file_attachments',

电子邮件附件的文件名列表,以分号分隔。必须使用绝对路径指定列表中的文件。附件列表的类型为nvarchar(max)

@query= ] 'query'

要执行的查询。查询结果可以作为文件附加,或包含在电子邮件的正文中。查询的类型为 nvarchar(max),并且可以包含任何有效的 Transact-SQL 语句。请注意,查询在单独的会话中执行,所以调用 sp_send_dbmail的脚本中的局部变量不可用于查询。

@execute_query_database= ] 'execute_query_database'

存储过程在其中运行查询的数据库上下文。该参数的类型为 sysname,默认为当前数据库。只有在指定 @query 时,此参数才适用。

@attach_query_result_as_file= ] attach_query_result_as_file

指定查询结果集是否作为附件返回。attach_query_result_as_file 的数据类型为 bit,默认值为 0。

如果该值为 0,则查询结果包含在电子邮件的正文中,在 @body 参数的内容之后。如果该值为 1,则结果作为附件返回。只有在指定 @query 时,此参数才适用。

@query_attachment_filename= ] query_attachment_filename

指定查询结果集附件使用的文件名。query_attachment_filename 的数据类型为 nvarchar(255),默认值为 NULL。如果 attach_query_result 为 0,则忽略此参数。如果 attach_query_result 为 1 且此参数为 NULL,则数据库邮件会创建任意文件名。

@query_result_header= ] query_result_header

指定查询结果是否包含列标题。query_result_header 值的数据类型为 bit。如果该值为 1,则查询结果包含列标题。如果该值为 0,则查询结果不包含列标题。该参数的默认值为 1。只有在指定 @query 时,此参数才适用。

@query_result_width = ] query_result_width

用于设置查询结果的格式的线条宽度(字符)。query_result_width 的数据类型为 int,默认值为 256。提供的值必须介于 10 和 32767 之间。只有在指定 @query 时,此参数才适用。

@query_result_separator= ] 'query_result_separator'

用于分隔查询输出中的列的字符。分隔符的类型为 char(1)。默认为“ ”(空格)。

@exclude_query_output= ] exclude_query_output

指定是否使用电子邮件返回查询执行的输出。exclude_query_output 的数据类型为 bit,默认值为 0。当此参数为 0 时,sp_send_dbmail 存储过程的执行将在控制台上打印作为查询执行结果而返回的消息。当此参数为 1 时,sp_send_dbmail 存储过程的执行不会在控制台上打印任何查询执行消息。

@append_query_error= ] append_query_error

指定是否在 @query 参数指定的查询返回错误时发送电子邮件。append_query_error 的数据类型为 bit,默认值为 0。如果此参数的值为 1,则数据库邮件会发送电子邮件,并电子邮件的正文中显示查询错误消息。如果此参数的值为 0,则数据库邮件不发送电子邮件,sp_send_dbmail 在结束时会返回代码 1,指示失败。

@query_no_truncate= ] query_no_truncate

指定是否使用可避免截断大型可变长度数据类型(varchar(max)nvarchar(max)varbinary(max)xmltextntextimage 和用户定义类型)的选项执行查询。设置该选项后,查询结果将不包含列标题。query_no_truncate 值的数据类型为 bit。当该值为 0 或未指定时,查询中的列将截断为 256 个字符。当该值为 1 时,不截断查询中的列。此参数的默认值为 0

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server中,可以使用SSMS(SQL Server Management Studio)或SqlPackage等工具将数据库表格存储过程等导出为脚本。 下面是使用SSMS导出脚本的步骤: 1. 打开SSMS并连接到SQL Server数据库。 2. 在“对象资源管理器”中,展开要导出的数据库,然后展开“表格”或“存储过程”节点。 3. 选择要导出的表格存储过程,右键单击并选择“任务” -> “生成脚本”。 4. 在“生成脚本向导”中,选择要导出的对象,然后选择输出选项和脚本选项,最后单击“下一步”。 5. 在“设置脚本选项”页面中,选择要生成的脚本文件的位置和名称,然后单击“下一步”。 6. 在“摘要”页面中,检查生成脚本的设置,然后单击“下一步”。 7. 在“完成”页面中,单击“完成”按钮,生成脚本文件。 使用SqlPackage导出脚本的步骤: 1. 打开命令提示符并定位到SqlPackage.exe所在的目录。 2. 运行以下命令,将数据库中的表格导出为脚本文件: ``` SqlPackage /Action:Extract /SourceDatabaseName:<database_name> /SourceServerName:<server_name> /ExtractAllTableData:true /ExtractAllTableSchema:true /ExtractReferencedServerScopedElements:true /OutputPath:<output_path> ``` 3. 运行以下命令,将数据库中的存储过程导出为脚本文件: ``` SqlPackage /Action:Extract /SourceDatabaseName:<database_name> /SourceServerName:<server_name> /ExtractAllTableData:false /ExtractAllTableSchema:false /ExtractReferencedServerScopedElements:true /ExtractAllStoredProcedures:true /OutputPath:<output_path> ``` 在上面的命令中,需要将<database_name>和<server_name>替换为实际的数据库名称和服务器名称,同时将<output_path>替换为要生成脚本文件的路径。运行命令后,SqlPackage将生成脚本文件并保存到指定的路径中。 无论是使用SSMS还是SqlPackage,都可以将SQL Server数据库中的表格存储过程等导出为脚本文件,以便在其他环境中使用或备份。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值