了解 SQL Server 作业执行的状态

了解 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 模块可以做到这一点?

欢迎提出任何建议,但我不能参与这项工作

答案1

不能 100% 确定这是否回答了你的问题。文档指出:

在所有创建的子进程退出之前,WinRM 不会从命令执行中返回。因此,无法使用 win_shell 生成长时间运行的子进程或后台进程。考虑创建一个 Windows 服务来管理后台进程。

因此,只要 Ansible 任务正在运行,osql命令也会运行。如果您想阻止osql命令在主机上运行,​​则该功能需要成为osql命令的一部分。

如果你正在寻找命令的实时日志输出,Ansible 中没有实现这一点,并且不会

相关内容