Here I will be posting custom reports, that were created by me or other forum members. All correction, improvements and optimizations to code below are highly appreciated.
- SQL procedure for converting time in seconds to hh:mm:sec format. May be useful for displaying duration in human readable form.
*This procedure used in some of my reports, make sure to add it.
- Audit report deleted and deactivated policies.
- Audit report clients removed from policies.
- List of all active clients, policies, policy types and backup selections in configuration.
- Last successful backup for failed jobs, done by M_henriksen, with a little bit of my tuning
- Generic daily report with
- Policy Name
- Client Name
- Platform
- Version
- Schedule Name
- Job Scheduled Time
- Job Start Time
- Job End Time
- Job Duration
- Job Status
- Files(Selection)
- Job Size(MB)
- Status Code
- Unique failures daily(Parent jobs only child jobs will be omitted)
SQL procedure
CREATE FUNCTION SecToTime(seconds INT)
RETURNS CHAR(20)
AS
BEGIN
RETURN (
(SELECT RIGHT('00' + CAST(CAST(floor(seconds/3600) as NUMERIC(3)) as CHAR(3)), 2)) + ':' +
(SELECT RIGHT('00' + CAST(CAST(floor(seconds/60) % 60 as NUMERIC(2)) as CHAR(2)), 2)) +':' +
(SELECT RIGHT('00' + CAST(CAST(seconds % 60 as NUMERIC(2)) as CHAR(2)), 2))
)
END
Example:
SELECT SecToTime(1000);
>>00:16:40
SELECT SecToTime(100000); -- hours will go over 24.
>>27:46:40
Audit report deleted and deactivated policies
SELECT
domain_MasterServer.networkName as "Master",
SUBSTR(LIST(audit_Key.value), 0, CHARINDEX(',',LIST(audit_Key.value))) as "Client",
SUBSTR(LIST(audit_Key.value), CHARINDEX(',',LIST(audit_Key.value))+1, LEN(LIST(audit_Key.value))) as "Policy",
MAX(UTCBigIntToNomTime(audit_Record.auditTime)) as "Timestamp",
MAX(audit_UserIdentity.userName) as "User"
FROM audit_Record, audit_Key, domain_MasterServer, audit_UserIdentity
WHERE domain_MasterServer.id = audit_Key.masterServerId
AND audit_Record.userIdentityId = audit_UserIdentity.id
AND audit_Record.masterServerId = audit_Key.masterServerId
AND audit_Record.tieInId = audit_Key.tieInId
AND audit_Record.recordId = audit_Key.recordId
AND audit_Record.messageId = 10
AND DATEDIFF(hour,UTCBigIntToNomTime(audit_Record.auditTime), GETDATE()) <= 48 --- Change time here
GROUP BY audit_Record.tieInId, domain_MasterServer.networkName
ORDER BY "Timestamp" DESC
Audit report clients removed from policies
SELECT
domain_MasterServer.networkName as "Master",
LIST(audit_Key.value) as "Policy",
LIST((CASE
WHEN audit_Record.messageId = 2 THEN 'Deactivated'
WHEN audit_Record.messageId = 5 THEN 'Deleted'
END)) as "Action",
LIST(UTCBigIntToNomTime(audit_Record.auditTime)) as "Timestamp",
LIST(audit_UserIdentity.userName) as "User"
FROM audit_Record, audit_Key, domain_MasterServer, audit_UserIdentity
WHERE domain_MasterServer.id = audit_Key.masterServerId
AND audit_Record.masterServerId = audit_Key.masterServerId
AND audit_Record.tieInId = audit_Key.tieInId
AND audit_Record.recordId = audit_Key.recordId
AND audit_Record.userIdentityId = audit_UserIdentity.id
AND audit_Record.messageId IN (2 ,5)
AND DATEDIFF(day,UTCBigIntToNomTime(audit_Record.auditTime), GETDATE()) <= 7 -- Change Time here
GROUP BY audit_Record.tieInId,domain_MasterServer.networkName
ORDER BY "Timestamp" DESC
List of all active clients, policies, policy types and backup selections in configuration
SELECT
domain_PolicyClient.clientName as "Client Name",
domain_PolicyClient.policyName as "Policy Name",
lookup_PolicyType.name as "Policy Type",
nb_Policy.fileList as "Backup Selection"
FROM
domain_PolicyClient, domain_Client,lookup_PolicyType, domain_Policy, nb_Policy
WHERE
AND lookup_PolicyType.id = domain_Policy.type
AND domain_PolicyClient.clientName = domain_Client.name
AND domain_PolicyClient.masterServerId = domain_Client.masterServerId
AND domain_PolicyClient.policyName = domain_Policy.name
AND domain_PolicyClient.masterServerId = domain_Policy.masterServerId
AND domain_PolicyClient.policyDomainName = domain_Policy.policyDomainName
AND domain_PolicyClient.policyVersionNo= domain_Policy.versionNo
AND domain_Policy.name = nb_Policy.name
AND domain_Policy.masterServerId = nb_Policy.masterServerId
AND domain_Policy.versionNo = nb_Policy.versionNo
AND domain_Policy.policyDomainName = nb_Policy.policyDomainName
AND domain_Policy.status = 0
AND domain_Policy.active = 1
AND lookup_PolicyType.name LIKE '%DB2%'
-- domain_Policy.name LIKE '%PR%'
-- domain_PolicyClient.clientName LIKE '%winprd%'
ORDER BY domain_PolicyClient.clientName
Last successful backup for failed jobs f all active clients, policies, policy types and backup selections in configuration
SELECT DISTINCT
B.friendlyName as 'Master Server',
A.clientName as 'Client Name',
A.policyName as 'Policy Name',
LIST(A.statuscode) as 'Status Code',
( select DATEDIFF(DAY,UtcBigIntToNomTime(MAX(CKP.endTime)),GETDATE()) as 'Days since Last successful'
from domain_JobArchive CKP
where CKP.masterServerId = A.masterServerId AND
CKP.id = CKP.parentJobId AND
CKP.clientId = A.clientId AND
CKP.policyId = A.policyId AND
CKP.policyName = A.policyName AND
CKP.policyType = A.policyType AND
( CKP.statusCode = 0 OR CKP.statusCode = 1 ) ),
( select UtcBigIntToNomTime(MAX(BKP.endTime)) as 'Last successful'
from domain_JobArchive BKP
where BKP.masterServerId = A.masterServerId AND
BKP.Id = BKP.parentJobId AND
BKP.clientId = A.clientId AND
BKP.policyId = A.policyId AND
BKP.policyName = A.policyName AND
BKP.policyType = A.policyType AND
( BKP.statusCode = 0 OR BKP.statusCode = 1 ) )
FROM "domain_JobArchive" A , "domain_masterserver" B
WHERE
A.masterServerId = B.id AND A.id = A.parentjobid AND
DATEDIFF(hour,UtcBigIntToNomTime(A.endTime), GETDATE()) <= 24
AND
( select DATEDIFF(DAY,UtcBigIntToNomTime(MAX(CKP.endTime)),GETDATE()) as 'Days since Last successful'
from domain_JobArchive CKP
where CKP.masterServerId = A.masterServerId AND
CKP.id = A.parentJobId AND
CKP.clientId = A.clientId AND
CKP.policyId = A.policyId AND
CKP.policyName = A.policyName AND
CKP.policyType = A.policyType AND
CKP.scheduleType = A.scheduleType AND
( CKP.statusCode = 0 OR CKP.statusCode = 1 ) ) > 0 AND
A.scheduleName != 'user_backup' AND
A.statusCode not in (0,1,190,199,230,239,240,800,1000) AND
A.policyName NOT LIKE 'SLP_%' AND A.type IN (0,22,28) AND
A.scheduletype not in (-1,2)
Group by A.clientName,A.masterServerId,A.policyName,B.friendlyName,policyType,scheduleType,clientid,policyid
ORDER BY B.friendlyName , A.clientName
Generic daily report with
SELECT
domain_JobArchive.policyName as "Policy Name",
domain_JobArchive.clientName as "Client Name",
domain_Client.hardwareDescription as "Platform",
domain_Client.versionLabel as "Version",
domain_JobArchive.scheduleName as "Schedule Name",
adjust_timestamp(domain_ScheduledJob.scheduledTime,10800000) as "Job Scheduled Time",
UTCBigIntToNomTime(domain_JobArchive.startTime) as "Job Start Time",
UTCBigIntToNomTime(domain_JobArchive.endTime) as "Job End Time",
SecToTime(DATEDIFF(minute,UTCBigIntToNomTime(domain_JobArchive.startTime),UTCBigIntToNomTime(domain_JobArchive.endTime))) as "Job Duration(Minutes)",
(CASE
WHEN domain_JobArchive.state = 3 AND domain_JobArchive.statusCode = 0 THEN 'Successful'
WHEN domain_JobArchive.state = 3 AND domain_JobArchive.statusCode = 1 THEN 'Partial'
WHEN domain_JobArchive.state = 3 AND domain_JobArchive.statusCode > 1 THEN 'Failed'
ELSE 'Failed'
END) as "Job Status",
nb_JobFilesArchive.fileinfo as "Files",
CAST(domain_JobArchive.bytesWritten/1024/1024/1024 as NUMERIC(20,2)) as "Job Size(MB)",
domain_JobArchive.statusCode as "Status Code"
FROM domain_JobArchive, lookup_JobState, domain_ScheduledJob, nb_JobFilesArchive, domain_MasterServer, domain_Client
WHERE domain_ScheduledJob.jobid = domain_JobArchive.id
AND domain_JobArchive.masterserverId = nb_JobFilesArchive.masterserverId
AND domain_JobArchive.clientName = nb_JobFilesArchive.clientName
AND domain_JobArchive.id = nb_JobFilesArchive.jobID
AND domain_MasterServer.id = domain_JobArchive.masterServerId
AND domain_JobArchive.clientName = domain_Client.name
AND domain_JobArchive.masterserverId = domain_Client.masterserverId
AND domain_JobArchive.state =lookup_JobState.id
AND DATEDIFF(hour,UTCBigIntToNomTime(domain_JobArchive.endTime), GETDATE()) <=24
AND domain_JobArchive.policyName != ''
Unique failures daily(Parent jobs only child jobs will be omitted)
SELECT
MAX(domain_Job.id) as "Job Primary ID",
domain_Job.clientName as "Client Name",
domain_Client.hardwareDescription as "Client OS",
lookup_JobType.name as "Job Type",
lookup_JobState.name as "Job Status",
count(domain_Job.statusCode) as "Number of entries",
domain_Job.policyName as "Policy Name",
MAX(UTCBigIntToNomTime(domain_Job.startTime)) as "Job Start Time",
MAX(UTCBigIntToNomTime(domain_Job.endTime)) as "Job End Time",
MAX(SecToTime(DATEDIFF(second,UTCBigIntToNomTime(domain_Job.startTime),UTCBigIntToNomTime(domain_Job.endTime)))) as "Job Duration",
MAX(domain_Job.bytesWritten/1024/1024/1024) as "Job Size(MB)",
MAX(domain_Job.filesBackedUp) as "Job File Count",
MAX(domain_Job.throughput) as "Job Throughput (KB/Sec)",
domain_Job.statusCode as "Status Code",
lookup_JobStatusCode.name as "Status Code Description"
FROM
domain_Job, domain_Client, lookup_JobType, lookup_JobState, lookup_JobStatusCode
WHERE domain_Job.type = lookup_JobType.id
AND domain_Job.statusCode > 0
AND domain_Job.statusCode = lookup_JobStatusCode.id
AND domain_Job.id = domain_Job.ParentJobID
AND domain_Job.state = lookup_JobState.id
AND domain_Job.clientName = domain_Client.name
AND DATEDIFF(hour,UTCBigIntToNomTime(domain_Job.endTime), GETDATE()) <= 24
AND domain_Job.policyName != ''
child jobs will be omitted)
SQL procedure
CREATE FUNCTION SecToTime(seconds INT)
RETURNS CHAR(20)
AS
BEGIN
RETURN (
(SELECT RIGHT('00' + CAST(CAST(floor(seconds/3600) as NUMERIC(3)) as CHAR(3)), 2)) + ':' +
(SELECT RIGHT('00' + CAST(CAST(floor(seconds/60) % 60 as NUMERIC(2)) as CHAR(2)), 2)) +':' +
(SELECT RIGHT('00' + CAST(CAST(seconds % 60 as NUMERIC(2)) as CHAR(2)), 2))
)
END
Example:
SELECT SecToTime(1000);
>>00:16:40
SELECT SecToTime(100000); -- hours will go over 24.
>>27:46:40
Audit report deleted and deactivated policies
SELECT
domain_MasterServer.networkName as "Master",
SUBSTR(LIST(audit_Key.value), 0, CHARINDEX(',',LIST(audit_Key.value))) as "Client",
SUBSTR(LIST(audit_Key.value), CHARINDEX(',',LIST(audit_Key.value))+1, LEN(LIST(audit_Key.value))) as "Policy",
MAX(UTCBigIntToNomTime(audit_Record.auditTime)) as "Timestamp",
MAX(audit_UserIdentity.userName) as "User"
FROM audit_Record, audit_Key, domain_MasterServer, audit_UserIdentity
WHERE domain_MasterServer.id = audit_Key.masterServerId
AND audit_Record.userIdentityId = audit_UserIdentity.id
AND audit_Record.masterServerId = audit_Key.masterServerId
AND audit_Record.tieInId = audit_Key.tieInId
AND audit_Record.recordId = audit_Key.recordId
AND audit_Record.messageId = 10
AND DATEDIFF(hour,UTCBigIntToNomTime(audit_Record.auditTime), GETDATE()) <= 48 --- Change time here
GROUP BY audit_Record.tieInId, domain_MasterServer.networkName
ORDER BY "Timestamp" DESC
Audit report clients removed from policies
SELECT
domain_MasterServer.networkName as "Master",
LIST(audit_Key.value) as "Policy",
LIST((CASE
WHEN audit_Record.messageId = 2 THEN 'Deactivated'
WHEN audit_Record.messageId = 5 THEN 'Deleted'
END)) as "Action",
LIST(UTCBigIntToNomTime(audit_Record.auditTime)) as "Timestamp",
LIST(audit_UserIdentity.userName) as "User"
FROM audit_Record, audit_Key, domain_MasterServer, audit_UserIdentity
WHERE domain_MasterServer.id = audit_Key.masterServerId
AND audit_Record.masterServerId = audit_Key.masterServerId
AND audit_Record.tieInId = audit_Key.tieInId
AND audit_Record.recordId = audit_Key.recordId
AND audit_Record.userIdentityId = audit_UserIdentity.id
AND audit_Record.messageId IN (2 ,5)
AND DATEDIFF(day,UTCBigIntToNomTime(audit_Record.auditTime), GETDATE()) <= 7 -- Change Time here
GROUP BY audit_Record.tieInId,domain_MasterServer.networkName
ORDER BY "Timestamp" DESC
List of all active clients, policies, policy types and backup selections in configuration
SELECT
domain_PolicyClient.clientName as "Client Name",
domain_PolicyClient.policyName as "Policy Name",
lookup_PolicyType.name as "Policy Type",
nb_Policy.fileList as "Backup Selection"
FROM
domain_PolicyClient, domain_Client,lookup_PolicyType, domain_Policy, nb_Policy
WHERE
AND lookup_PolicyType.id = domain_Policy.type
AND domain_PolicyClient.clientName = domain_Client.name
AND domain_PolicyClient.masterServerId = domain_Client.masterServerId
AND domain_PolicyClient.policyName = domain_Policy.name
AND domain_PolicyClient.masterServerId = domain_Policy.masterServerId
AND domain_PolicyClient.policyDomainName = domain_Policy.policyDomainName
AND domain_PolicyClient.policyVersionNo= domain_Policy.versionNo
AND domain_Policy.name = nb_Policy.name
AND domain_Policy.masterServerId = nb_Policy.masterServerId
AND domain_Policy.versionNo = nb_Policy.versionNo
AND domain_Policy.policyDomainName = nb_Policy.policyDomainName
AND domain_Policy.status = 0
AND domain_Policy.active = 1
AND lookup_PolicyType.name LIKE '%DB2%'
-- domain_Policy.name LIKE '%PR%'
-- domain_PolicyClient.clientName LIKE '%winprd%'
ORDER BY domain_PolicyClient.clientName
Last successful backup for failed jobs f all active clients, policies, policy types and backup selections in configuration
SELECT DISTINCT
B.friendlyName as 'Master Server',
A.clientName as 'Client Name',
A.policyName as 'Policy Name',
LIST(A.statuscode) as 'Status Code',
( select DATEDIFF(DAY,UtcBigIntToNomTime(MAX(CKP.endTime)),GETDATE()) as 'Days since Last successful'
from domain_JobArchive CKP
where CKP.masterServerId = A.masterServerId AND
CKP.id = CKP.parentJobId AND
CKP.clientId = A.clientId AND
CKP.policyId = A.policyId AND
CKP.policyName = A.policyName AND
CKP.policyType = A.policyType AND
( CKP.statusCode = 0 OR CKP.statusCode = 1 ) ),
( select UtcBigIntToNomTime(MAX(BKP.endTime)) as 'Last successful'
from domain_JobArchive BKP
where BKP.masterServerId = A.masterServerId AND
BKP.Id = BKP.parentJobId AND
BKP.clientId = A.clientId AND
BKP.policyId = A.policyId AND
BKP.policyName = A.policyName AND
BKP.policyType = A.policyType AND
( BKP.statusCode = 0 OR BKP.statusCode = 1 ) )
FROM "domain_JobArchive" A , "domain_masterserver" B
WHERE
A.masterServerId = B.id AND A.id = A.parentjobid AND
DATEDIFF(hour,UtcBigIntToNomTime(A.endTime), GETDATE()) <= 24
AND
( select DATEDIFF(DAY,UtcBigIntToNomTime(MAX(CKP.endTime)),GETDATE()) as 'Days since Last successful'
from domain_JobArchive CKP
where CKP.masterServerId = A.masterServerId AND
CKP.id = A.parentJobId AND
CKP.clientId = A.clientId AND
CKP.policyId = A.policyId AND
CKP.policyName = A.policyName AND
CKP.policyType = A.policyType AND
CKP.scheduleType = A.scheduleType AND
( CKP.statusCode = 0 OR CKP.statusCode = 1 ) ) > 0 AND
A.scheduleName != 'user_backup' AND
A.statusCode not in (0,1,190,199,230,239,240,800,1000) AND
A.policyName NOT LIKE 'SLP_%' AND A.type IN (0,22,28) AND
A.scheduletype not in (-1,2)
Group by A.clientName,A.masterServerId,A.policyName,B.friendlyName,policyType,scheduleType,clientid,policyid
ORDER BY B.friendlyName , A.clientName
Generic daily report with
SELECT
domain_JobArchive.policyName as "Policy Name",
domain_JobArchive.clientName as "Client Name",
domain_Client.hardwareDescription as "Platform",
domain_Client.versionLabel as "Version",
domain_JobArchive.scheduleName as "Schedule Name",
adjust_timestamp(domain_ScheduledJob.scheduledTime,10800000) as "Job Scheduled Time",
UTCBigIntToNomTime(domain_JobArchive.startTime) as "Job Start Time",
UTCBigIntToNomTime(domain_JobArchive.endTime) as "Job End Time",
SecToTime(DATEDIFF(minute,UTCBigIntToNomTime(domain_JobArchive.startTime),UTCBigIntToNomTime(domain_JobArchive.endTime))) as "Job Duration(Minutes)",
(CASE
WHEN domain_JobArchive.state = 3 AND domain_JobArchive.statusCode = 0 THEN 'Successful'
WHEN domain_JobArchive.state = 3 AND domain_JobArchive.statusCode = 1 THEN 'Partial'
WHEN domain_JobArchive.state = 3 AND domain_JobArchive.statusCode > 1 THEN 'Failed'
ELSE 'Failed'
END) as "Job Status",
nb_JobFilesArchive.fileinfo as "Files",
CAST(domain_JobArchive.bytesWritten/1024/1024/1024 as NUMERIC(20,2)) as "Job Size(MB)",
domain_JobArchive.statusCode as "Status Code"
FROM domain_JobArchive, lookup_JobState, domain_ScheduledJob, nb_JobFilesArchive, domain_MasterServer, domain_Client
WHERE domain_ScheduledJob.jobid = domain_JobArchive.id
AND domain_JobArchive.masterserverId = nb_JobFilesArchive.masterserverId
AND domain_JobArchive.clientName = nb_JobFilesArchive.clientName
AND domain_JobArchive.id = nb_JobFilesArchive.jobID
AND domain_MasterServer.id = domain_JobArchive.masterServerId
AND domain_JobArchive.clientName = domain_Client.name
AND domain_JobArchive.masterserverId = domain_Client.masterserverId
AND domain_JobArchive.state =lookup_JobState.id
AND DATEDIFF(hour,UTCBigIntToNomTime(domain_JobArchive.endTime), GETDATE()) <=24
AND domain_JobArchive.policyName != ''
Unique failures daily(Parent jobs only child jobs will be omitted)
SELECT
MAX(domain_Job.id) as "Job Primary ID",
domain_Job.clientName as "Client Name",
domain_Client.hardwareDescription as "Client OS",
lookup_JobType.name as "Job Type",
lookup_JobState.name as "Job Status",
count(domain_Job.statusCode) as "Number of entries",
domain_Job.policyName as "Policy Name",
MAX(UTCBigIntToNomTime(domain_Job.startTime)) as "Job Start Time",
MAX(UTCBigIntToNomTime(domain_Job.endTime)) as "Job End Time",
MAX(SecToTime(DATEDIFF(second,UTCBigIntToNomTime(domain_Job.startTime),UTCBigIntToNomTime(domain_Job.endTime)))) as "Job Duration",
MAX(domain_Job.bytesWritten/1024/1024/1024) as "Job Size(MB)",
MAX(domain_Job.filesBackedUp) as "Job File Count",
MAX(domain_Job.throughput) as "Job Throughput (KB/Sec)",
domain_Job.statusCode as "Status Code",
lookup_JobStatusCode.name as "Status Code Description"
FROM
domain_Job, domain_Client, lookup_JobType, lookup_JobState, lookup_JobStatusCode
WHERE domain_Job.type = lookup_JobType.id
AND domain_Job.statusCode > 0
AND domain_Job.statusCode = lookup_JobStatusCode.id
AND domain_Job.id = domain_Job.ParentJobID
AND domain_Job.state = lookup_JobState.id
AND domain_Job.clientName = domain_Client.name
AND DATEDIFF(hour,UTCBigIntToNomTime(domain_Job.endTime), GETDATE()) <= 24
AND domain_Job.policyName != ''
Here I will be posting custom reports, that were created by me or other forum members. All correction, improvements and optimizations to code below are highly appreciated.
- SQL procedure for converting time in seconds to hh:mm:sec format. May be useful for displaying duration in human readable form.
*This procedure used in some of my reports, make sure to add it.
- Audit report deleted and deactivated policies.
- Audit report clients removed from policies.
- List of all active clients, policies, policy types and backup selections in configuration.
- Last successful backup for failed jobs, done by M_henriksen, with a little bit of my tuning
- Generic daily report with
- Policy Name
- Client Name
- Platform
- Version
- Schedule Name
- Job Scheduled Time
- Job Start Time
- Job End Time
- Job Duration
- Job Status
- Files(Selection)
- Job Size(MB)
- Status Code
- Unique failures daily(Parent jobs only child jobs will be omitted)
SQL procedure
CREATE FUNCTION SecToTime(seconds INT)
RETURNS CHAR(20)
AS
BEGIN
RETURN (
(SELECT RIGHT('00' + CAST(CAST(floor(seconds/3600) as NUMERIC(3)) as CHAR(3)), 2)) + ':' +
(SELECT RIGHT('00' + CAST(CAST(floor(seconds/60) % 60 as NUMERIC(2)) as CHAR(2)), 2)) +':' +
(SELECT RIGHT('00' + CAST(CAST(seconds % 60 as NUMERIC(2)) as CHAR(2)), 2))
)
END
Example:
SELECT SecToTime(1000);
>>00:16:40
SELECT SecToTime(100000); -- hours will go over 24.
>>27:46:40
Audit report deleted and deactivated policies
SELECT
domain_MasterServer.networkName as "Master",
SUBSTR(LIST(audit_Key.value), 0, CHARINDEX(',',LIST(audit_Key.value))) as "Client",
SUBSTR(LIST(audit_Key.value), CHARINDEX(',',LIST(audit_Key.value))+1, LEN(LIST(audit_Key.value))) as "Policy",
MAX(UTCBigIntToNomTime(audit_Record.auditTime)) as "Timestamp",
MAX(audit_UserIdentity.userName) as "User"
FROM audit_Record, audit_Key, domain_MasterServer, audit_UserIdentity
WHERE domain_MasterServer.id = audit_Key.masterServerId
AND audit_Record.userIdentityId = audit_UserIdentity.id
AND audit_Record.masterServerId = audit_Key.masterServerId
AND audit_Record.tieInId = audit_Key.tieInId
AND audit_Record.recordId = audit_Key.recordId
AND audit_Record.messageId = 10
AND DATEDIFF(hour,UTCBigIntToNomTime(audit_Record.auditTime), GETDATE()) <= 48 --- Change time here
GROUP BY audit_Record.tieInId, domain_MasterServer.networkName
ORDER BY "Timestamp" DESC
Audit report clients removed from policies
SELECT
domain_MasterServer.networkName as "Master",
LIST(audit_Key.value) as "Policy",
LIST((CASE
WHEN audit_Record.messageId = 2 THEN 'Deactivated'
WHEN audit_Record.messageId = 5 THEN 'Deleted'
END)) as "Action",
LIST(UTCBigIntToNomTime(audit_Record.auditTime)) as "Timestamp",
LIST(audit_UserIdentity.userName) as "User"
FROM audit_Record, audit_Key, domain_MasterServer, audit_UserIdentity
WHERE domain_MasterServer.id = audit_Key.masterServerId
AND audit_Record.masterServerId = audit_Key.masterServerId
AND audit_Record.tieInId = audit_Key.tieInId
AND audit_Record.recordId = audit_Key.recordId
AND audit_Record.userIdentityId = audit_UserIdentity.id
AND audit_Record.messageId IN (2 ,5)
AND DATEDIFF(day,UTCBigIntToNomTime(audit_Record.auditTime), GETDATE()) <= 7 -- Change Time here
GROUP BY audit_Record.tieInId,domain_MasterServer.networkName
ORDER BY "Timestamp" DESC
List of all active clients, policies, policy types and backup selections in configuration
SELECT
domain_PolicyClient.clientName as "Client Name",
domain_PolicyClient.policyName as "Policy Name",
lookup_PolicyType.name as "Policy Type",
nb_Policy.fileList as "Backup Selection"
FROM
domain_PolicyClient, domain_Client,lookup_PolicyType, domain_Policy, nb_Policy
WHERE
AND lookup_PolicyType.id = domain_Policy.type
AND domain_PolicyClient.clientName = domain_Client.name
AND domain_PolicyClient.masterServerId = domain_Client.masterServerId
AND domain_PolicyClient.policyName = domain_Policy.name
AND domain_PolicyClient.masterServerId = domain_Policy.masterServerId
AND domain_PolicyClient.policyDomainName = domain_Policy.policyDomainName
AND domain_PolicyClient.policyVersionNo= domain_Policy.versionNo
AND domain_Policy.name = nb_Policy.name
AND domain_Policy.masterServerId = nb_Policy.masterServerId
AND domain_Policy.versionNo = nb_Policy.versionNo
AND domain_Policy.policyDomainName = nb_Policy.policyDomainName
AND domain_Policy.status = 0
AND domain_Policy.active = 1
AND lookup_PolicyType.name LIKE '%DB2%'
-- domain_Policy.name LIKE '%PR%'
-- domain_PolicyClient.clientName LIKE '%winprd%'
ORDER BY domain_PolicyClient.clientName
Last successful backup for failed jobs f all active clients, policies, policy types and backup selections in configuration
SELECT DISTINCT
B.friendlyName as 'Master Server',
A.clientName as 'Client Name',
A.policyName as 'Policy Name',
LIST(A.statuscode) as 'Status Code',
( select DATEDIFF(DAY,UtcBigIntToNomTime(MAX(CKP.endTime)),GETDATE()) as 'Days since Last successful'
from domain_JobArchive CKP
where CKP.masterServerId = A.masterServerId AND
CKP.id = CKP.parentJobId AND
CKP.clientId = A.clientId AND
CKP.policyId = A.policyId AND
CKP.policyName = A.policyName AND
CKP.policyType = A.policyType AND
( CKP.statusCode = 0 OR CKP.statusCode = 1 ) ),
( select UtcBigIntToNomTime(MAX(BKP.endTime)) as 'Last successful'
from domain_JobArchive BKP
where BKP.masterServerId = A.masterServerId AND
BKP.Id = BKP.parentJobId AND
BKP.clientId = A.clientId AND
BKP.policyId = A.policyId AND
BKP.policyName = A.policyName AND
BKP.policyType = A.policyType AND
( BKP.statusCode = 0 OR BKP.statusCode = 1 ) )
FROM "domain_JobArchive" A , "domain_masterserver" B
WHERE
A.masterServerId = B.id AND A.id = A.parentjobid AND
DATEDIFF(hour,UtcBigIntToNomTime(A.endTime), GETDATE()) <= 24
AND
( select DATEDIFF(DAY,UtcBigIntToNomTime(MAX(CKP.endTime)),GETDATE()) as 'Days since Last successful'
from domain_JobArchive CKP
where CKP.masterServerId = A.masterServerId AND
CKP.id = A.parentJobId AND
CKP.clientId = A.clientId AND
CKP.policyId = A.policyId AND
CKP.policyName = A.policyName AND
CKP.policyType = A.policyType AND
CKP.scheduleType = A.scheduleType AND
( CKP.statusCode = 0 OR CKP.statusCode = 1 ) ) > 0 AND
A.scheduleName != 'user_backup' AND
A.statusCode not in (0,1,190,199,230,239,240,800,1000) AND
A.policyName NOT LIKE 'SLP_%' AND A.type IN (0,22,28) AND
A.scheduletype not in (-1,2)
Group by A.clientName,A.masterServerId,A.policyName,B.friendlyName,policyType,scheduleType,clientid,policyid
ORDER BY B.friendlyName , A.clientName
Generic daily report with
SELECT
domain_JobArchive.policyName as "Policy Name",
domain_JobArchive.clientName as "Client Name",
domain_Client.hardwareDescription as "Platform",
domain_Client.versionLabel as "Version",
domain_JobArchive.scheduleName as "Schedule Name",
adjust_timestamp(domain_ScheduledJob.scheduledTime,10800000) as "Job Scheduled Time",
UTCBigIntToNomTime(domain_JobArchive.startTime) as "Job Start Time",
UTCBigIntToNomTime(domain_JobArchive.endTime) as "Job End Time",
SecToTime(DATEDIFF(minute,UTCBigIntToNomTime(domain_JobArchive.startTime),UTCBigIntToNomTime(domain_JobArchive.endTime))) as "Job Duration(Minutes)",
(CASE
WHEN domain_JobArchive.state = 3 AND domain_JobArchive.statusCode = 0 THEN 'Successful'
WHEN domain_JobArchive.state = 3 AND domain_JobArchive.statusCode = 1 THEN 'Partial'
WHEN domain_JobArchive.state = 3 AND domain_JobArchive.statusCode > 1 THEN 'Failed'
ELSE 'Failed'
END) as "Job Status",
nb_JobFilesArchive.fileinfo as "Files",
CAST(domain_JobArchive.bytesWritten/1024/1024/1024 as NUMERIC(20,2)) as "Job Size(MB)",
domain_JobArchive.statusCode as "Status Code"
FROM domain_JobArchive, lookup_JobState, domain_ScheduledJob, nb_JobFilesArchive, domain_MasterServer, domain_Client
WHERE domain_ScheduledJob.jobid = domain_JobArchive.id
AND domain_JobArchive.masterserverId = nb_JobFilesArchive.masterserverId
AND domain_JobArchive.clientName = nb_JobFilesArchive.clientName
AND domain_JobArchive.id = nb_JobFilesArchive.jobID
AND domain_MasterServer.id = domain_JobArchive.masterServerId
AND domain_JobArchive.clientName = domain_Client.name
AND domain_JobArchive.masterserverId = domain_Client.masterserverId
AND domain_JobArchive.state =lookup_JobState.id
AND DATEDIFF(hour,UTCBigIntToNomTime(domain_JobArchive.endTime), GETDATE()) <=24
AND domain_JobArchive.policyName != ''
Unique failures daily(Parent jobs only child jobs will be omitted)
SELECT
MAX(domain_Job.id) as "Job Primary ID",
domain_Job.clientName as "Client Name",
domain_Client.hardwareDescription as "Client OS",
lookup_JobType.name as "Job Type",
lookup_JobState.name as "Job Status",
count(domain_Job.statusCode) as "Number of entries",
domain_Job.policyName as "Policy Name",
MAX(UTCBigIntToNomTime(domain_Job.startTime)) as "Job Start Time",
MAX(UTCBigIntToNomTime(domain_Job.endTime)) as "Job End Time",
MAX(SecToTime(DATEDIFF(second,UTCBigIntToNomTime(domain_Job.startTime),UTCBigIntToNomTime(domain_Job.endTime)))) as "Job Duration",
MAX(domain_Job.bytesWritten/1024/1024/1024) as "Job Size(MB)",
MAX(domain_Job.filesBackedUp) as "Job File Count",
MAX(domain_Job.throughput) as "Job Throughput (KB/Sec)",
domain_Job.statusCode as "Status Code",
lookup_JobStatusCode.name as "Status Code Description"
FROM
domain_Job, domain_Client, lookup_JobType, lookup_JobState, lookup_JobStatusCode
WHERE domain_Job.type = lookup_JobType.id
AND domain_Job.statusCode > 0
AND domain_Job.statusCode = lookup_JobStatusCode.id
AND domain_Job.id = domain_Job.ParentJobID
AND domain_Job.state = lookup_JobState.id
AND domain_Job.clientName = domain_Client.name
AND DATEDIFF(hour,UTCBigIntToNomTime(domain_Job.endTime), GETDATE()) <= 24
AND domain_Job.policyName != ''