Forum Discussion

dummyscripter's avatar
7 years ago

SQL - query multiple archive-databases

Hi all I'm a bloody beginner with sql-code. What I want to know is to the amount of archived data for last night (22:00-06:00) and the night before. Both for two different archives. My code is the...
  • ChrisLangevin's avatar
    7 years ago

    Mike,

    Give this one a try. Its output is not exactly how you asked for, but it is more flexible and provides totals by archive and by date. Include as many days/archives as you want by editing the WHERE clause.

     

    SELECT 
    	CASE
    		WHEN GROUPING(CAST(CAST(ss.ArchivedDate AS DATE) AS varchar(10))) = 1 THEN 'All Dates'
    		ELSE CAST(CAST(ss.ArchivedDate AS DATE) AS varchar(10))
    		END AS 'Archived Date'
    	,CASE
    		WHEN GROUPING(av.ArchiveName) = 1 THEN 'All Archives'
    		ELSE av.ArchiveName
    		END AS 'Archive Name'
    	,SUM(ss.ItemSize) AS [Total Size (KB)]
    	,(SUM(CAST(ss.ItemSize AS DECIMAL) / 1024)) AS [Total Size (MB)]
    	,(SUM(CAST(ss.ItemSize AS DECIMAL) / 1024 / 1024)) AS [Total Size (GB)]
    
    FROM 
    	Saveset AS ss
    	JOIN ArchivePoint AS ap ON ap.ArchivePointIdentity = ss.ArchivePointIdentity
    	JOIN EnterpriseVaultDirectory.dbo.ArchiveView AS av ON av.VaultEntryId = ap.ArchivePointId
    
    WHERE 
    	ss.ArchivedDate > DATEADD(DAY, -2, CONVERT(DATE, GETDATE())) --Filter to two days prior to today's date
    	--AND av.ArchiveName IN ('Name1', 'Name2') --Filter by Archive Name
    	--AND av.VaultEntryId IN ('ArchiveID1', 'ArchiveID2') --Filter by Archive ID
    
    GROUP BY 
    	CAST(CAST(ss.ArchivedDate AS DATE) AS varchar(10)) 
    	,av.ArchiveName
    	WITH ROLLUP

     

    Results look like this:

     

    --Chris