SQL:SQL Server – 获取作业历史详细信息

SQL:SQL Server – 获取作业历史详细信息

在本文中,我们将介绍如何使用SQL查询获取SQL Server数据库的作业历史详细信息。作业历史记录包含有关作业的执行时间、状态、持续时间以及其他相关信息。通过查看作业历史记录,我们可以了解作业的执行情况,并进行故障排除和性能优化。

阅读更多:SQL 教程

1. 检索作业历史记录

要检索SQL Server数据库的作业历史记录,我们可以使用以下查询:

SELECT
    j.name AS 'Job Name',
    jh.run_date AS 'Run Date',
    jh.run_time AS 'Run Time',
    jh.run_status AS 'Run Status',
    jh.run_duration AS 'Run Duration'
FROM
    msdb.dbo.sysjobs j
INNER JOIN
    msdb.dbo.sysjobhistory jh ON j.job_id = jh.job_id
ORDER BY
    jh.run_date DESC, jh.run_time DESC;
SQL

上述查询使用sysjobssysjobhistory系统视图来检索作业历史记录。sysjobs视图包含有关作业的信息,而sysjobhistory视图包含有关作业的历史记录。我们通过作业ID将这两个视图连接在一起,并按照运行日期和运行时间进行降序排序来获取最新的作业历史记录。

该查询将返回以下列的结果:

  • ‘Job Name’:作业名称
  • ‘Run Date’:作业运行日期(格式为YYYYMMDD)
  • ‘Run Time’:作业运行时间(格式为HHMMSS)
  • ‘Run Status’:作业运行状态(1表示成功,0表示失败)
  • ‘Run Duration’:作业运行持续时间(以秒为单位)

2. 过滤作业历史记录

如果我们只想检索特定作业的历史记录,可以在查询中添加WHERE子句来过滤结果。以下是一个示例,仅检索名为’Backup Database Job’的作业历史记录:

SELECT
    j.name AS 'Job Name',
    jh.run_date AS 'Run Date',
    jh.run_time AS 'Run Time',
    jh.run_status AS 'Run Status',
    jh.run_duration AS 'Run Duration'
FROM
    msdb.dbo.sysjobs j
INNER JOIN
    msdb.dbo.sysjobhistory jh ON j.job_id = jh.job_id
WHERE
    j.name = 'Backup Database Job'
ORDER BY
    jh.run_date DESC, jh.run_time DESC;
SQL

通过在WHERE子句中指定作业名称,我们可以仅返回特定作业的历史记录。

3. 格式化日期和时间

查询返回的作业运行日期和时间是以整数形式显示的,不太容易阅读。为了使日期和时间更易于理解,我们可以使用SQL Server内置的日期和时间函数来格式化它们。

以下查询将日期和时间列转换为可读的格式:

SELECT
    j.name AS 'Job Name',
    CONVERT(DATE, CONVERT(VARCHAR(8), jh.run_date)) AS 'Run Date',
    STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(6), jh.run_time), 6), 3, 0, ':'), 6, 0, ':') AS 'Run Time',
    jh.run_status AS 'Run Status',
    jh.run_duration AS 'Run Duration'
FROM
    msdb.dbo.sysjobs j
INNER JOIN
    msdb.dbo.sysjobhistory jh ON j.job_id = jh.job_id
ORDER BY
    jh.run_date DESC, jh.run_time DESC;
SQL

在上述查询中,我们使用了CONVERT函数将整数日期列转换为日期类型,并使用STUFF函数将整数时间列转换为时间类型。通过这种方式,日期和时间列将以可读的格式显示。

4. 总结

通过使用SQL查询,我们可以轻松检索SQL Server数据库的作业历史记录。通过查看作业的执行时间、状态和持续时间,我们可以及时发现问题并及时采取措施。此外,我们还介绍了如何过滤和格式化作业历史记录,以便更好地满足我们的需求。

使用SQL查询检索作业历史记录是SQL Server管理和维护的重要方面,对于数据库管理员和开发人员来说十分有用。希望本文对您在获取作业历史记录方面有所帮助。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册