sql - 识别辅助副本上缺少的代理作业

标签 sql sql-server content-management-system

我正在尝试设置一个流程,该流程将检查可用性组中所有服务器上的代理作业,并报告辅助副本中可能缺少的任何作业。

我对 AG 的所有服务器进行了 CMS 设置,并且可以跨副本运行代理作业查询,但我只想返回某些服务器上的作业,而不是所有服务器上的作业。

我编写了一个查询来使用 COUNT() 获取此信息,但由于查询结果是按服务器分组的,因此这不起作用。我还尝试将结果放入临时表中,看看这是否有帮助,但这似乎没有多大区别。

AG 中有四台服务器,以下查询应返回不在所有四台服务器上的任何作业的名称,但由于它似乎也返回服务器名称,因此无法将它们识别为同一作业.

CREATE TABLE #jobs (
    JobName NVARCHAR(128))

INSERT INTO #jobs
SELECT name JobName
FROM sysjobs 

SELECT * 
FROM #jobs
GROUP BY JobName
HAVING COUNT(*) < 4
ORDER BY JobName

DROP TABLE #jobs

目前的查询将抛出如下结果集:

+------------+------------------------------------------+
| ServerName |                 JobName                  |
+------------+------------------------------------------+
| ServerA    | DBA DatabaseBackup - AG_DATABASES - FULL |
| ServerA    | OutputFile Cleanup                       |
| ServerB    | DBA DatabaseBackup - AG_DATABASES - FULL |
| ServerB    | IndexOptimize - USER_DATABASES           |
| ServerC    | DBA DatabaseBackup - AG_DATABASES - FULL |
| ServerB    | IndexOptimize - USER_DATABASES           |
| ServerD    | DBA DatabaseBackup - AG_DATABASES - FULL |
| ServerD    | Output File Cleanup                      |
+------------+------------------------------------------+

所有四台服务器都存在 DBA DatabaseBackup - AG_DATABASES - FULL 作业,因此我不希望返回该作业,但由于来自 CMS 连接的隐式 servername 列,它无法将它们识别为相同的值。

最佳答案

正如 GMB 提到的,您需要提取“名称”字段的一部分。

我建议将字符串拆分为 ServerName 和 JobName。

假设名称由 - 分隔,就像在您的示例中一样,您的代码可能如下所示。

CREATE TABLE #jobs (
ServerName NVARCHAR(128)    
,JobName NVARCHAR(128))

INSERT INTO #jobs
SELECT 
LEFT(name,CHARINDEX('-',name)-1) AS ServerName --Takes the Part left of the first -
, RIGHT(name,LEN(name) - CHARINDEX('-',name)) AS JobName --Takes the Part right of the first -
FROM sysjobs 

SELECT JobName 
FROM #jobs
GROUP BY JobName
HAVING COUNT(*) < 4
ORDER BY JobName

DROP TABLE #jobs

关于sql - 识别辅助副本上缺少的代理作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53650491/

相关文章:

sql - 如何单独安装localdb?

sql - 在 SQL 中查找子字符串

c# - 具有相同列的相同表的数据建模

sql-server - VBA 中的数据转换类型错误

sql - 可以在 Sybase ASE 中使用具有 "TOP 1 column"的相关子查询吗?

sql - 存储数以万亿计的文档相似性

postgresql - 什么是兼容 postgres、开源且基于 php 或 python 的好 cms?

version-control - 您如何使用托管内容对应用程序进行 CM

c# - Linq 数组列表顺序更改

javascript - pimcore后端白屏registerNS错误