使用Windows任务计划程序运行的PowerShell脚本未运行SQL Server SSIS DTEXEC.EXE作业

问题描述:

希望此问题具有足够的独特性,不能重复。我有一个PowerShell脚本,它执行两件事。使用Windows任务计划程序运行的PowerShell脚本未运行SQL Server SSIS DTEXEC.EXE作业

  1. 记录插入SQL Server表
  2. 将文本写入一个文本文件

对于这篇文章的目的,我简单的脚本。在我的电脑上,脚本位于C:\ Temp \ ssis.ps1。以下是脚本的内容。

DTEXEC.EXE /F "C:\Temp\ssisjob.dtsx"  
$date = Get-Date 
Write-Output "This PowerShell script file was last run on $date" >> C:\Temp\test.txt 

当我手动运行此PowerShell脚本,记录插入到SQL Server表和文本的线被写入test.txt文件。如果我计划使用Windows任务计划程序运行此脚本,则会在文本文件中写入一行新文本,但记录不会插入到SQL Server表中。这告诉我Windows Task Scheduler能够运行PowerShell脚本。但是,由于某些未知原因,Windows任务计划程序似乎不想运行脚本的SSIS作业(DTEXEC.EXE)部分。事件查看器确认SSIS作业存在问题。我正在运行Microsoft SQL Server 2014,Developer Version。

enter image description here enter image description here

在我的任务,在操作选项卡上,添加参数字段具有以下参考:C:\ TEMP \ ssis.ps1。任务计划程序被配置为以最高权限运行。

enter image description here

我已经尝试了所有在PowerShell中以下执行政策。无论我选择哪种执行政策,我的经验都不会改变。

  • 绕道
  • 无限制
  • 下RemoteSigned

任务计划程序中的历史记录选项卡具有信息事件,但没有错误事件。

enter image description here

我没有查看SQL Server日志(这是一个生产服务器)的权限。

我一直在调试这个问题几个星期,我已经在堆栈溢出阅读了很多帖子,但我仍然无法找到答案,所以希望我已经做了我的尽职调查之前在这里做一个新的职位。我可以添加一些额外的观察,但我不希望我的帖子在这里变得很长。如果任何人有任何提示或提示或洞察力可能导致我走下正确的道路,这将不胜感激。

+1

第一面红旗是包在你的个人文件夹。也许调度程序帐户无法访问它。你能找到任何Windows调度程序日志? (即在窗口事件日志中)。尝试将软件包移动到更容易访问的地方,如C:\ temp并查看它是否有效,还可以找到描述脚本执行的日志。什么版本的SSIS? SQL Server有它自己的调度和日志记录基础结构 –

+0

非常感谢你提供这些技巧和想法。我会尝试你在这里分享的想法。一旦我尝试了这些想法,我会再次作出回应。我真的很感激这里的想法! :) – JeremyCanfield

+0

今天我将PowerShell脚本移动到C:\ Temp,并遇到同样的问题。我能够在事件查看器中找到确认SSIS作业失败的事件。我正在运行SQL Server 2014 Developer版本。我编辑了我的帖子以反映这些新发现。谢谢你可能有任何额外的想法! :) – JeremyCanfield

这是我想出的解决方案。我没有将文件导出到Excel,而是导出到一个平面文件(txt文件)。此外,使用Nick McDermaids出色的建议,而不是在Task Scheduler中使用PowerShell,我启动了Task Scheduler中的dtexec.exe文件。

任务Sheduler操作选项卡

  • 保持行动启动程序

  • 在程序/脚本,请键入dtexec.exe

  • 在添加参数,类型/ F “C:\路径\到\ example.dtsx

  • 离开开始框中空