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

Sql server 使用Windows任务计划程序运行的PowerShell脚本未运行SQL Server SSIS DTEXEC.EXE作业,sql-server,windows,powershell,ssis,scheduled-tasks,Sql Server,Windows,Powershell,Ssis,Scheduled Tasks,希望这个问题足够独特,不会重复。我有一个PowerShell脚本,它可以做两件事 将记录插入SQL Server表中 将文本写入文本文件 为了写这篇文章,我简化了脚本。在我的计算机上,脚本位于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" >&

希望这个问题足够独特,不会重复。我有一个PowerShell脚本,它可以做两件事

  • 将记录插入SQL Server表中
  • 将文本写入文本文件
  • 为了写这篇文章,我简化了脚本。在我的计算机上,脚本位于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 Task Scheduler运行此脚本,则会将一行新的文本写入文本文件,但不会将记录插入SQL Server表中。这说明Windows任务计划程序能够运行PowerShell脚本。但是,由于某些未知原因,Windows任务计划程序似乎不希望运行脚本的SSIS作业(DTEXEC.EXE)部分。事件查看器确认SSIS作业存在问题。我正在运行Microsoft SQL Server 2014,开发人员版本

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

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

    • 绕过
    • 无限制
    • 远程签名
    任务计划程序中的“历史记录”选项卡包含信息事件,但没有错误事件

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


    我已经调试这个问题几个星期了,我在这里读了很多关于Stack Overflow的帖子,但是我似乎仍然找不到答案,所以希望我在写新帖子之前已经做了尽职调查。我可以补充一些额外的观察结果,但我不希望我在这里的帖子太长。如果任何人有任何提示、提示或见解可以引导我走上正确的道路,我将不胜感激。

    以下是我提出的解决方案。我没有将文件导出到Excel,而是导出到一个平面文件(txt文件)。另外,使用Nick McDermaids优秀的推荐,而不是在任务调度器中使用PowerShell,我在任务调度器中启动了dtexec.exe文件

    任务调度程序操作选项卡

    • 将操作保留为启动程序

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

    • 在“添加参数”中,键入/f“C:\path\to\example.dtsx

    • 将“开始”框留空


    第一个红色标志是程序包位于您的个人文件夹中。可能计划程序帐户无法访问它。您能找到任何windows计划程序日志吗?(即,在windows事件日志中)。尝试将包移动到更容易访问的位置,如C:\temp,看看它是否有效,但也可以找到一个描述脚本执行情况的日志。什么版本的SSIS?SQL Server有自己的计划和日志基础结构非常感谢您提供这些提示和想法Nick。我将尝试您在此处共享的想法。我将再次回复我曾经尝试过这些想法。我真的很欣赏这里的想法!:)今天我将我的PowerShell脚本移动到C:\Temp,我遇到了同样的问题。我能够在事件查看器中找到一个事件,确认SSIS作业失败。我正在运行SQL Server 2014开发人员版本。我编辑了我的帖子以反映这些新发现。T感谢您的任何其他想法!:)那么事件在“详细信息”选项卡上说了什么?请复制/粘贴。程序包保护级别是什么?您使用什么安全性连接到数据库(SQL或windows身份验证)。要尝试的其他方法是将计划作业设置为以自己的身份运行-按“更改用户或组”“按下按钮并输入您的凭据。再次感谢您的想法,尼克!我已经修改了我的帖子,加入了事件查看器的详细信息选项卡。我在“详细信息”选项卡中没有看到有助于确定解决方案的信息。创建SSIS作业时,我选择的包保护级别为“使用用户密钥加密敏感数据”。我还尝试了“不保存敏感数据”和“使用密码加密敏感数据”。这两个选项都显示PowerShell中的身份验证错误。连接到SQL时,我使用的是SQL身份验证。我确实验证了计划任务的“常规”选项卡是否配置为使用我的用户帐户运行。