【问题标题】:how to execute stored procedure or query via batch file and send the results in email via batch file如何通过批处理文件执行存储过程或查询,并通过批处理文件将结果发送到电子邮件中
【发布时间】:2016-01-20 15:53:13
【问题描述】:

我可以通过批处理文件执行查询并将其发送到文件夹,但我需要将结果发送到电子邮件,我不知道如何通过批处理文件将 sql 查询/sp 结果发送到电子邮件中。

感谢任何建议和帮助。

谢谢

【问题讨论】:

  • 什么数据库(mysql、sql server等)?如果是 SQL Server,您可以使用 sp_send_dbmail

标签: sql file batch-file


【解决方案1】:

听起来您正在执行 SQL 查询,我猜想将其转储到文本文件(比如说 output.txt)。我假设是 Windows,我假设是 SQL Server,因为您没有指定。答案如下,但我想提供两个选项:

选项 1:设置 SQL Server 以发送您的电子邮件,这将有几个好处,包括:

  • SQL 代理可以控制调度和日志记录
  • 您将获得仅 SQL 的解决方案
  • 电子邮件是集中管理的,而不是在一堆不同的批处理文件中。

在 SQL 中设置电子邮件并不难,这里有清楚的解释:

How to send email from SQL Server?

选项 2:使用 PowerShell 进行 SQL 调用。

您的问题的答案(如下)使用 PowerShell 发送电子邮件。由于您将为此使用 PS,因此您不妨使用 PS 进行数据库调用。您可以找到数百个如何从 PS 调用 SQL 的示例。

终于找到你想要的答案了……

如果您想继续使用命令行解决方案(也许您必须启动一堆非 SQL 命令),您将需要使用 PowerShell(假设您不想让事情变得复杂,比如编写您自己的 .exe)。

第 1 步:使用以下命令读取查询 (output.txt) 的内容:

$sqlOutput = Get-Content Output.txt -Raw

第 2 步:使用 $sqlOutput 作为电子邮件的正文。这是一个很好的演练:

http://www.howtogeek.com/120011/stupid-geek-tricks-how-to-send-email-from-the-command-line-in-windows-without-extra-software/

第 3 步:如果要将文件作为附件附加,可以使用此处的示例:

https://msdn.microsoft.com/en-us/library/system.net.mail.attachment(v=vs.110).aspx

【讨论】:

  • 好吧,我也试过了。我在数据库邮件中创建了我的帐户和配置文件,当我执行它时显示“邮件已排队”,当我检查日志文件时,我收到以下消息:邮件可以由于邮件服务器故障,无法发送给收件人。异常消息:无法连接到邮件服务器。 (连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应)我在这里遗漏了什么吗?谢谢
  • 所以连接到邮件服务器时出现问题。有三个可能的问题。 (1) 你找错服务器了;您需要指向设置为处理 SMTP 的服务器。 (2) 服务器通常会被“锁定”,因此它们不会用于垃圾邮件。这可能是因为 (a) 您的凭据错误或 (b) 您发送的服务器/IP 需要被 SMPT 服务器列入白名单。 SQL 的东西可能很棘手,因为事情在不同的帐户下运行。您可以尝试让其他解决方案之一正常工作,以便知道您可以发送电子邮件,然后尝试设置 SQL。
猜你喜欢
  • 1970-01-01
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 2013-10-05
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
相关资源
最近更新 更多