gpt4 book ai didi

sql - 如何使用 sp_send_dbmail 发送多个查询?

转载 作者:行者123 更新时间:2023-12-03 00:07:23 25 4
gpt4 key购买 nike

我正在尝试使用 sp_send_dbmail 发送电子邮件。我需要它将一个查询作为附件发送,另一个查询作为电子邮件正文的一部分发送。问题是 sp_send_dbmail 只有一个 @query 参数,而且我看不到任何添加另一个参数的方法。

有没有办法a)添加第二个查询(附加所有参数)或b)将查询执行到变量中,然后将其添加到我的电子邮件正文中?

我使用的是 sql-server 2005。

TIA!

最佳答案

使用存储过程 msdb.dbo.sp_send_dbmail@query 参数作为附件,并将 @body 参数与变量一起使用包含其他查询的结果。

下面的示例代码从 SQL Server 作业步骤历史记录中创建一个字符串,其中包含用于使用存储过程 msdb.dbo.sp_send_dbmail 发送电子邮件的 HTML 表元素。您应该能够根据您的目的进行调整。

DECLARE @cat        varchar(MAX),
@email_id int


SELECT @cat = COALESCE(@cat + '', '')
+ '<tr><td>'
+ j.[name] + '</td><td>'
+ CAST(js.step_id AS varchar) + '</td><td>'
+ js.step_name + '</td><td>'
+ CONVERT(char(23), jsl.date_created, 121) + '</td><td>'
+ jsl.[log] + '</td></tr>'
FROM msdb.dbo.sysjobstepslogs jsl
JOIN msdb.dbo.sysjobsteps js ON jsl.step_uid = js.step_uid
JOIN msdb.dbo.sysjobs j ON js.job_id = j.job_id


SET @cat = '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<style type="text/css">
td {
border: 1pt dotted #ddd;
}

#log_text {
width: 20em;
}
</style>
</head>
<body>
<table>
<colgroup>
<col />
<col />
<col />
<col />
<col id="log_text" />
</colgroup>
<thead>
<tr>
<th>Job</th><th>Step</th><th>Step name</th><th>Log created</th><th>Log text</th></tr>
</thead>
<tbody>
' + @cat + '
</tbody>
</table>
</body>
</html>'


EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQLServerDatabaseMailProfile',
@recipients = 'person@example.com',
@subject = 'SQL Server Database Mail · Job step logs',
@body = @cat,
@body_format = 'HTML',
@mailitem_id = @email_id OUTPUT

关于sql - 如何使用 sp_send_dbmail 发送多个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4808340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com