【发布时间】: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