2012-10-19 23 views
0

我有麻烦的EXE从一个exec主CMDSHELL语句在SQL Server的工作CMDSHELL声明。问题与Exec的主..在SQL Server

当我双击它时,EXE正常工作。但是当我尝试在SQL Server中使用此命令运行它时,它不会执行。

EXEC master..xp_cmdshell 'Path\Program.exe' 

该程序本身非常简单 - 它只是应该使用内部DLL发送电子邮件警报。如果遇到错误,它应该将该错误写入当前目录中的文件。 (最终,我希望它将记录插入到特定表格时通过触发器进行设置)。

当我与该语句运行程序的上方,该程序不会打印出的错误消息(如下所示),或发送电子邮件。我怎么知道它是否正在执行?遇到错误?可能会发生什么?当我通过双击路径\ program.exe运行程序时,程序本身工作正常。

Imports System.IO 

Module Module1 

    Sub Main() 
     Try 
      EmailSenderDLL.EmailSender.send(15, "Alert Text.") 
     Catch e As Exception 
      File.WriteAllText(Directory.GetCurrentDirectory() & "\" & Now.Year & Now.Month & Now.Day & Now.Millisecond, e.Message & vbNewLine & e.StackTrace) 
     End Try 

    End Sub 

End Module 

我可以采取哪些措施来解决这个问题?

+0

为什么不使用SQL Server构建邮件功能? –

+0

我们没有内部邮件服务器,所以我们通过.net代码将提醒发送到谷歌的服务器。我正在使用sql server 2005.有没有办法发送邮件w/o电子邮件服务器? – bernie2436

+0

出于安全原因,请禁用xp_cmdshell。 http://stackoverflow.com/questions/3797036/sql-server-why-xp-cmdshell-is-disabled-by-default http://www.iderware.com/sql-security-disable-sql-xp_cmdshell运行exe的来自sql代理。将数据库邮件用于电子邮件通知 – brian

回答