计划的sqlcmd任务无法正常工作

时间:2016-11-23 11:54:10

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

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

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

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或右键单击任务计划程序中的任务手动运行第二个(非工作)命令,一切正常。

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

P.S。 %FILENAMEANDPATH%的格式为SP_Log_23-11-2016_11-41-00.log

1 个答案:

答案 0 :(得分:0)

我会回答'回答'这是为了帮助任何人遇到类似的问题......

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

关闭机会我取消选中安全选项"以最高权限运行"第二个命令现在有效吗?!?!?!?!?我不明白为什么,但现在它有效......

取自Technet

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

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