问题标签 [sp-send-dbmail]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 如何从 SQL Server 发送电子邮件?
如何使用 T-SQL 发送电子邮件但电子邮件地址存储在表中?我想遍历表格并能够发送电子邮件。到目前为止,我找不到这样做的好例子。
sql-server - SQL Server:sp_send_dbmail 在调用存储过程时从不将电子邮件排队
我有一个 SQL 作业,它设置为运行sp_send_dbmail
并将存储过程的结果作为 csv 文件附加到电子邮件中。这项工作一直持续到一个半星期前。
完全披露:我在那个时候对存储过程进行了更改。存储过程以前查看一个链接服务器中的表,现在查看另一个链接服务器中的表。
我能够从工作中取出代码并在查询窗口中成功运行它,我还能够在没有sp_send_dbmail
调用的情况下在查询窗口中成功执行存储过程。此外,作业按计划执行并报告成功,并且我在作业历史记录中没有看到任何错误消息。我在作业中包含了运行该过程并在下面发送邮件的代码:
自创建作业以来,我没有更改任何此代码,我只是在存储过程中进行了更改,以便它查看不同的链接数据源。任何形式的帮助表示赞赏。
编辑:我还检查了sysmail_mailitems
表格,每次手动运行作业时都没有发现当天排队的消息,想确保我包含了该详细信息。
sql-server - SQL Server 中的字符串构建
根据Microsoft 文档 sp_send_dbmail
,列表必须是分号分隔的。但是,在我的许多应用程序中,我无法保证此列表是干净的。我需要一种强大的方法来确保语法上有效的电子邮件列表,这样我的应用程序就不会中断。
我一直在研究XML PATH
,STUFF
和其他方法,但语法非常混乱。有没有人在他们的技巧包中有一个方便的方法(请不要存储过程或函数,我想要一个开箱即用的解决方案)?
从概念上讲,我认为最好将 CSV 列表分成一个临时表,分别处理每封电子邮件,然后使用分号分隔符重新组合列表。我怀疑有更好的方法。
同样,如果可能的话,我想要一个开箱即用的解决方案。:)
sql-server - 执行 SQL 任务电子邮件
我从“执行 SQL 任务”发送电子邮件时遇到问题
失败并出现以下错误:
“多步 OLE DB 操作生成错误。检查每个 OLE DB 状态值(如果可用)。没有完成任何工作。”。可能的失败原因:查询有问题,“ResultSet”属性设置不正确,参数设置不正确,或连接未正确建立。
这是 SQL 语句-
参数映射:
变量名 User::Email_DB
参数名 =@body
当我直接在查询中包含 @body 参数的文本而不是使用参数映射时,它工作正常。帮助表示赞赏。
sp-send-dbmail - sp_send_dbmail:避免(受影响的 n 行)
调用 sp_send_dbmail:成功执行,但最后会出现一个额外的行,其中包含受查询影响的行。
有什么办法可以避免这条线?
谢谢!!!
sql-server - 从作业执行的 sp_send_dbmail 失败,查询结果作为文件附加
我遇到了以下问题:当尝试发送带有查询结果作为文件附加的电子邮件时,通过执行普通查询使用sp_send_dbmail一切似乎工作正常。
但是如果将相同的代码添加到 JobStep 并运行作业,它会失败。
工作经历中的错误说
错误格式化查询,可能是无效参数 [SQLSTATE 42000](错误 22050)。步骤失败。
但是当我注释掉引用文件附加的参数时,它又开始正常工作了。
有什么建议么?
sql - 使用 SP_SEND_DBMAIL 向所有收件人发送重复电子邮件的存储过程
我有一个每晚运行的存储过程,它应该将查询结果发送给多个收件人。然而,在大多数日子里,它最终会在一分钟后发送一封重复的电子邮件。我正在使用的代码如下(所有电子邮件和数据库参考都已更改):
对此的任何帮助将不胜感激。
tsql - 如何在发送 sp_send_dbmail (Transact-SQL) 时删除日期中的字母“T”
我创建了一个 sp_send_dbmail,它从我的数据库中获取查询信息,但现在当它返回日期时,需要空格的地方会显示一个“T”。
我试图用空格替换“T”Set @Body = Replace(@Body, '<TRRow>T</TRRow>', '')
但没有任何反应
请帮忙 !
输出
sql - 如何更改 sp_send_dbmail 查询的附件编码?
我sp_send_dbmail
用来生成和发送提供给其他程序的文件。该程序消化“ANSI/ASCII”和“ISO-8859-1”编码。但我不能sp_send_dbmail
做一个。
过程调用如下所示
因此,附件是根据传递的查询结果创建的。但是由于某种原因实际附加到邮件的结果文件是使用 UCS2 Little Endian 编码的。有没有办法改变它?
try-catch - 无法从 sp_send_dbmail 捕获错误
我们使用 sp_send_dbmail 来通知我们某些问题,有时我们会在电子邮件中附加文件。有时我们会收到错误 32(正在使用的文件)错误。在这种情况下,我已经将一些代码放在一起发送没有附件的电子邮件,但无论我做什么,我都无法捕捉到错误并忽略它。
我希望能够处理或忽略来自 sp_send_dbmail 的任何错误,因为这会导致生产中的作业失败。
我尝试实现本文http://www.sqlusa.com/articles2008/trycatch/中描述的技术,如下所示:
这是返回的内容:
消息 22051,级别 16,状态 1,第 0 行无法打开附件文件“C:\temp\stage\test.txt”。执行 API 'CreateFile' 失败,错误号为 32。@@ERROR: 0 Retcode ONE: 1 Mail (Id: 11) queued。转码:0
电子邮件确实已发送,但 Msg 22051 从未被捕获。这就是导致生产失败的原因。
但是,如果我缺少某些东西并且有办法从 sp_send_dbmail 中获取错误,我肯定想知道如何。
谢谢,
射线