【问题标题】:Scheduled sqlcmd Task not working计划的 sqlcmd 任务不工作
【发布时间】:2017-04-07 10:13:58
【问题描述】:

以下是通过任务计划程序执行的,这两个命令使用相同的任务运行(只是改变了触发时间)并且我在任务触发时间发生之前注销了服务器。

如果我为以下命令创建一个批处理文件,它可以正常执行(它创建日志文件并将 sqlcmd 输出写入文件),此外日志文件中的输出为 1,这说明运行批处理的帐户文件有权执行存储过程:

sqlcmd -E -S .\SQLEXPRESS -d WEDFUTtest -Q"select HAS_PERMS_BY_NAME('sp_DBMaintenance', 'OBJECT', 'EXECUTE')" -o %FILENAMEANDPATH%

如果我使用以下命令编辑批处理文件(因此它保持相同的权限等):

sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_DBMaintenance @dbName=TestDB, @FragmentationThresholdForReorganizeTableLowerLimit='5.0', @FragmentationThresholdForRebuildTableLowerLimit='30.0'" -d TestDB -o %FILENAMEANDPATH%

然后注销并允许任务计划程序运行它,它不起作用,即没有日志文件,整个任务在很短的时间内执行,有时不到 1 秒......我知道 sp_DBMaintenance 脚本需要超过 20 分钟完成...没有错误消息...

此外(登录域管理员帐户)我可以通过 cmd 或通过右键单击任务计划程序中的任务手动运行第二个(非工作)命令,一切正常。

所以问题是,为什么第二个命令不能正常工作?

附: %FILENAMEANDPATH% 的格式为 SP_Log_23-11-2016_11-41-00.log

【问题讨论】:

    标签: batch-file permissions scheduled-tasks windows-server-2003 sqlcmd


    【解决方案1】:

    我会将“答案”放在这里,以防万一遇到类似问题的人有所帮助...

    第 1 条和第 2 条命令的任务计划程序设置相同...

    如果我取消选中安全选项“以最高权限运行”并且第二个命令现在可以工作?!?!?!?!?我不明白为什么,但现在它可以工作了......

    取自Technet

    “如果您选中标记为以最高权限运行的复选框,任务计划程序将使用提升的权限令牌而不是最低权限 (UAC) 令牌运行任务...”

    让我感到困惑的是,第一个命令如何使用“以最高权限运行”执行 sqlcmd,但第二个 sqlcmd 只有在没有它的情况下才能工作?!??!?!?!?!

    【讨论】:

      猜你喜欢
      • 2019-05-15
      • 2016-02-20
      • 1970-01-01
      • 2012-08-31
      • 2013-12-29
      • 1970-01-01
      • 2014-12-19
      • 2017-06-27
      • 2018-07-02
      相关资源
      最近更新 更多