了解SQL Server作业执行的状态

我试图从Ansible(使用osql)启动一堆作业:

- name: 'Starting jobs' win_shell: 'osql -S {{ server }} -Q "exec msdb.dbo.sp_start_job {{ item }}" -U {{ username }} -P {{ password }}' args: executable: cmd with_items: '{{ jobs }}' until: jobs_out.stdout.find("started successfully") != -1 register: jobs_out 

一切正常,但我没有关于工作执行的当前状态的信息。 我不知道它是否正在运行或已经完成。

有没有什么办法来获得一些PID或阻止osql直到完成? 有这样的Ansible模块吗?

任何消化都是受欢迎的,但是我不能碰这些工作

不是100%确定,如果这回答你的问题。 该文件指出:

WinRM不会从命令执行中返回,直到所有创build的subprocess退出。 因此,使用win_shell产生长时间运行的subprocess或后台进程是不可能的。 考虑创build一个Windows服务来pipe理后台进程。

所以只要Ansible任务正在运行, osql命令也在运行。 如果要防止osql命令在主机上运行,​​那么该function将需要成为osql命令的一部分。

如果你正在寻找命令的实时日志输出,那么在Ansible中不会实现,而且不会