存储sql查询输出,并将其通过电子邮件发送到DL或特定的电子邮件ID
我想从.bat文件运行sql查询。我了解如何创建.bat文件和.sql文件,然后从.bat文件调用.sql文件。我的问题是如何将其输出存储在任何位置,然后发送到电子邮件 我现在的蝙蝠看起来像存储sql查询输出,并将其通过电子邮件发送到DL或特定的电子邮件ID,sql,sql-server,batch-file,Sql,Sql Server,Batch File,我想从.bat文件运行sql查询。我了解如何创建.bat文件和.sql文件,然后从.bat文件调用.sql文件。我的问题是如何将其输出存储在任何位置,然后发送到电子邮件 我现在的蝙蝠看起来像 osql -S <ServerName> -U <User Name> -P <Password> < mysqlfile.sql 感谢您的帮助。您可以设置SQL Server 2008数据库邮件,如图所示 然后,您可以通过电子邮件发送查询结果,如图所示,或者使用
osql -S <ServerName> -U <User Name> -P <Password> < mysqlfile.sql
感谢您的帮助。您可以设置SQL Server 2008数据库邮件,如图所示 然后,您可以通过电子邮件发送查询结果,如图所示,或者使用VBscript来执行查询
osql -S <ServerName> -U <User Name> -P <Password> -o Out.txt < mysqlfile.sql
Blat out.txt -to <recipient> -s <subject> -server <ip or hostname of SMTP server:<port>
@echo off
setlocal
if exist "out.txt" del "out.txt"
osql -S Server -U user -P password -o Out.txt < mysqlfile.sql
set vbs_=Email.vbs
set skip=
findstr "'%skip%VBS" "%~f0" > "%vbs_%"
cscript //nologo "%vbs_%"
ping -n 3 localhost>nul
if exist "%vbs_%" del "%vbs_%"
goto :eof
Const ForReading = 1, ForWriting = 2 'VBS
sFile="Out.txt" 'VBS
Set oFso = CreateObject("Scripting.FileSystemObject") 'VBS
Set oFile = oFso.OpenTextFile(sFile, ForReading) 'VBS
Set oMail=CreateObject("CDO.Message") 'VBS
sSchema="http://schemas.microsoft.com/cdo/configuration/" 'VBS
with oMail.Configuration.Fields 'VBS
.Item(sSchema & "sendusing")= 2 'VBS
.Item(sSchema & "smtpserver")= "YourServer" 'VBS
.Item(sSchema & "smtpserverport") = 25 'VBS
.Update 'VBS
end with 'VBS
oMail.Subject="SQL Log" 'VBS
oMail.From="email@domain.com" 'VBS
oMail.To="Sendto@someother.com" 'VBS
oMail.TextBody = oFile.ReadAll 'VBS
oMail.Send 'VBS
oFile.Close 'VBS
set oMail=nothing 'VBS
set oFile = Nothing 'VBS
osql-S-U-P-Out.txtnul
如果存在“%vbs%”删除“%vbs%”
后藤:eof
读取常数=1,写入常数=2'VBS
sFile=“Out.txt”VBS
一组so=CreateObject(“Scripting.FileSystemObject”)VBS
文件集=of so.OpenTextFile(sFile,ForReading)'VBS
设置oMail=CreateObject(“CDO.Message”)的VBS
sSchema=”http://schemas.microsoft.com/cdo/configuration/“‘VBS
使用oMail.Configuration.Fields的VBS
.项目(sSchema和“发送使用”)=2'VBS
.Item(sSchema和“smtpserver”)=“YourServer”VBS
.项目(sSchema和“smtpserverport”)=25'VBS
.更新“VBS”
以“VBS”结尾
oMail.Subject=“SQL日志”VBS
oMail.From=”email@domain.com“‘VBS
oMail.To=”Sendto@someother.com“‘VBS
oMail.TextBody=oFile.ReadAll的VBS
oMail.Send'VBS
关闭VBS
设置oMail=nothing的VBS
文件集=无的VBS
什么版本的sql server?您好,我运行了上面的批处理文件,但它给了我以下错误,请您更详细地说明sSchema…以下是错误D:\Test\mail.vbs(7,1)CDO.Message.1:“SendUsing”配置值无效。系统找不到指定的文件。C:\Program Files\CA\WA Agent R11.3.1\Email.vbs(4,2)Microsoft VBScript运行时错误:未找到文件C:\Program Files\CA\WA Agent R11.3.1\Email.vbs(4,2)Microsoft VBScript运行时错误:未找到文件OK。我从中得到的信息是,您首先只获取了VBS代码,创建了MAIL.VBS并对其进行了测试。返回的有关SendUsing配置值的错误无效。SendUsing的值为2表示使用端口发送。您确定SMTP服务器正在侦听端口25吗?尝试使用Telnet your.smtp.server 25
远程登录到它,并查看它是否以220作为响应。如果没有,请使用端口443远程登录到您的服务器,并查看它是否响应。如果它在443上响应,而不是在25上响应,我们必须稍微调整代码以使用ssla。在您这样做之后,您在C:\Program Files\CA\WA Agent R11.3.1目录中创建了批处理文件并运行了它,这导致了文件未找到错误。如果从未创建out.txt文件,则会发生这种情况。您是否创建了一个名为mysqlfile.sql的文件,其中包含T-sql查询并将其放在同一目录中?或者更改批处理中.sql文件的名称以匹配您的?如果你不那样做,它就不会起作用。
@echo off
setlocal
if exist "out.txt" del "out.txt"
osql -S Server -U user -P password -o Out.txt < mysqlfile.sql
set vbs_=Email.vbs
set skip=
findstr "'%skip%VBS" "%~f0" > "%vbs_%"
cscript //nologo "%vbs_%"
ping -n 3 localhost>nul
if exist "%vbs_%" del "%vbs_%"
goto :eof
Const ForReading = 1, ForWriting = 2 'VBS
sFile="Out.txt" 'VBS
Set oFso = CreateObject("Scripting.FileSystemObject") 'VBS
Set oFile = oFso.OpenTextFile(sFile, ForReading) 'VBS
Set oMail=CreateObject("CDO.Message") 'VBS
sSchema="http://schemas.microsoft.com/cdo/configuration/" 'VBS
with oMail.Configuration.Fields 'VBS
.Item(sSchema & "sendusing")= 2 'VBS
.Item(sSchema & "smtpserver")= "YourServer" 'VBS
.Item(sSchema & "smtpserverport") = 25 'VBS
.Update 'VBS
end with 'VBS
oMail.Subject="SQL Log" 'VBS
oMail.From="email@domain.com" 'VBS
oMail.To="Sendto@someother.com" 'VBS
oMail.TextBody = oFile.ReadAll 'VBS
oMail.Send 'VBS
oFile.Close 'VBS
set oMail=nothing 'VBS
set oFile = Nothing 'VBS