我们有几个运行 SQL 代理作业的 SQL Server,在它们自己的 sysjobhistory 表中记录历史记录。我正在尝试设置一个集中式服务器,其中包含一项作业,该作业从所有其他服务器收集历史记录,对其进行一些格式化,然后将其放入名为 AllJobHistory 的表中。作为此过程的一部分,我希望用一列来指示作业的多个步骤是同一作业运行的一部分。它们已通过 job_id 列标记为同一作业的一部分,但我想知道特定行来自作业的 3:00 运行与 4:00 运行。能够基于此列进行过滤将使我们的故障排除工作变得更加容易,但我没有在任何现有系统表或 DMV 中看到任何将这些步骤链接在一起的内容,是吗?
\n\n我自己的第一次尝试是使用 run_date、run_time 和 run_duration 列。对于每个步骤,如果我从 run_time 中减去到目前为止的总 run_duration,它应该使我回到与该作业的所有其他运行相比唯一的时间。看起来它一直在工作,直到我发现它不是 \xe2\x80\x99t 的情况(可能是因为 SQL Server 以秒的精度舍入 run_time 和 run_duration )。这是我对查询的尝试(删除了额外的列)。
\n\nWITH JobDetails AS \n(\n SELECT \n QUOTENAME(UPPER(\'ServerName\')) AS [Server],\n j.job_id AS [JobID],\n j.name AS [JobName],\n s.step_id AS [Step],\n msdb.dbo.agent_datetime(run_date, run_time) AS [RunDate],\n (run_duration/10000*3600 + (run_duration/100)%100*60 + run_duration%100) AS [RunDurationSeconds]\n FROM msdb.dbo.sysjobhistory h\n INNER JOIN msdb.dbo.sysjobs j ON j.job_id = h.job_id\n LEFT OUTER JOIN msdb.dbo.sysjobsteps …
Run Code Online (Sandbox Code Playgroud) 对于本地 SQL Server,有 Express、Web、Standard 和 Enterprise 等版本。Azure SQL DB 中是否存在这些版本(或类似版本),尤其是 Express?
我的 Google-Fu 在这里失败了,可能是因为它不存在。
sql-server express-edition azure-sql-database sql-server-express