2013-05-13 48 views
0

我正在运行SQL Server 2008,并且我有一个.exe文件,它创建一个保存在同一目录中的.txt文件。 (因此,在运行.exe文件之前,运行.exe文件时存在.exe文件和.txt文件。)从那里,.exe文件将使用该.txt文件作为附件发送电子邮件。SQL Server 2008任务计划程序将不会从程序创建文件

下面是完美的作品:如果我双击.exe文件,则会创建.txt文件并发送电子邮件。或者如果一个.txt文件已经存在,它会被一个新文件覆盖。如果我双击运行.exe的批处理文件,它也可以工作。

这是什么不起作用:如果我尝试启动服务器上的任务计划程序中的.exe或.bat文件,它将执行一些非常奇怪的操作:.txt文件不会覆盖或创建。如果.txt文件不存在,则不会创建新文件,也不会发送电子邮件。如果我在那里放置一个旧的.txt文件,电子邮件将被发送,但与旧文件(即文件未被覆盖)。所以,全部压缩:任务计划程序不会允许.exe文件创建.txt文件。为了好玩,我修改了程序(它是用C++创建的),所以它只创建一个没有电子邮件的.txt文件,它仍然不会创建.txt文件。

+1

听起来像是我的一个安全问题 - 什么凭证是运行在下面的任务?你确定这个过程开始吗? – JohnD 2013-05-13 19:57:19

+0

我不确定这是什么声望。第一次使用服务器和时间调度程序。 – com 2013-05-13 21:01:43

+0

这里是从事件日志中的数据: 用户“OLYMPUS \”更新任务计划任务“\ PDAutomation” 任务计划推出“{c6eb4bfb-a1c3-40a7-87c7-0973f8e41ab6}”任务的实例“\ PDAutomation”由于时间触发条件。 任务计划程序启动任务引擎“S-1-5-21-2114788981-1653766190-837300805-77880:OLYMPUS \:Password:”进程。命令=“taskeng.exe”,ProcessID = 2108,ThreadID = 4116 – com 2013-05-13 22:05:40

回答

1

我假设你正在使用类似的代码:

if (!File.Exists("logfile.txt")) 
{ 
    log = new StreamWriter("logfile.txt"); 
} 
else 
{ 
    log = File.AppendText("logfile.txt"); 
} 

我发现运行时的TaskScheduler这是更好地使用这样的完整路径:

if (!File.Exists("c:\\Program Files (x86)\\Company\\Sales Report\\logfile.txt")) 
{ 
     log = new StreamWriter("c:\\Program Files (x86)\\Company\\Sales Report\\logfile.txt"); 
} 
else 
{ 
     log = File.AppendText("c:\\Program Files (x86)\\Company\\Sales Report\\logfile.txt"); 
} 

阅读时,这也适用文件。

相关问题