Added new scripts and changes
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
with cteFilteredSize as (
|
||||
SELECT d.[Server Name]
|
||||
,sum(d.[UsedSpaceMB]) as filteredInstanceMBUsed
|
||||
FROM [dbo].[octpdba-931-detail] [d]
|
||||
WHERE d.[toIgnore]=0
|
||||
GROUP BY d.[server Name]
|
||||
)
|
||||
,cteUnfilteredSize as (
|
||||
SELECT d.[Server Name]
|
||||
,sum(d.[UsedSpaceMB]) as unfilteredInstanceMBUsed
|
||||
FROM [dbo].[octpdba-931-detail] [d]
|
||||
GROUP BY d.[server Name]
|
||||
)
|
||||
,cteCurrentSize as (
|
||||
select g.[Server Name], sum(g.[SpaceUsedMB]) currentMbUsed
|
||||
from dbo.[octpdba-931-global] g
|
||||
GROUP BY g.[Server Name]
|
||||
)
|
||||
|
||||
SELECT f.[Server Name], f.[filteredInstanceMBUsed], uf.[unfilteredInstanceMBUsed], c.[currentMbUsed]
|
||||
FROM [cteFilteredSize] f
|
||||
INNER JOIN [cteUnfilteredSize] uf on uf.[Server Name] = f.[Server Name]
|
||||
INNER JOIN [cteCurrentSize] c on [c].[Server Name] = f.[Server Name]
|
||||
ORDER BY f.[Server Name]
|
||||
@@ -0,0 +1,81 @@
|
||||
IF OBJECT_ID('tempdb..#toUpdate') IS NOT NULL
|
||||
BEGIN
|
||||
DROP TABLE [#toUpdate];
|
||||
END
|
||||
|
||||
/*Reset flag toIgnore*/
|
||||
UPDATE [dbo].[octpdba-931-detail]
|
||||
SET [octpdba-931-detail].[toIgnore]=0;
|
||||
|
||||
/*Search for the group that has the smallest number of pharmacies*/
|
||||
DECLARE @cntLimit INT;
|
||||
WITH [cteInstances] AS (
|
||||
SELECT [g].[Server Name],
|
||||
CASE
|
||||
WHEN [g].[Server Name] LIKE 'ama%' THEN 'ama'
|
||||
WHEN [g].[Server Name] LIKE 'swama%' THEN 'ama'
|
||||
WHEN [g].[Server Name] LIKE 'cvi%' THEN 'cvi'
|
||||
WHEN [g].[Server Name] LIKE 'swcvi%' THEN 'cvi'
|
||||
WHEN [g].[Server Name] LIKE 'sun%' THEN 'sun'
|
||||
WHEN [g].[Server Name] LIKE 'swsun%' THEN 'sun'
|
||||
WHEN [g].[Server Name] LIKE 'swprd%' THEN 'central'
|
||||
ELSE 'unknown' END AS [customer]
|
||||
FROM [dbo].[octpdba-931-global] [g]
|
||||
GROUP BY [g].[Server Name]
|
||||
),
|
||||
[cteCnt] AS (
|
||||
SELECT [cteInstances].[customer], COUNT(1) AS [cnt]
|
||||
FROM [cteInstances]
|
||||
GROUP BY [cteInstances].[customer]
|
||||
)
|
||||
SELECT @cntLimit = MIN([cnt])
|
||||
FROM [cteCnt]
|
||||
WHERE [cteCnt].[customer] IN ('sun', 'cvi', 'ama')
|
||||
|
||||
|
||||
/*Every table that is present in less than 90 pharmacies is deemed as to be ignored (phcy count: ama=215, sun=91, cvi=92)*/
|
||||
SELECT [d].[schemaName],
|
||||
[d].[TableName],
|
||||
[d].[dbName],
|
||||
COUNT(1) AS [cnt]
|
||||
INTO [#toUpdate]
|
||||
FROM [dbo].[octpdba-931-detail] [d]
|
||||
WHERE [d].[serverName] != 'swprddb01.centralinfra.net\APSSQL'
|
||||
AND [d].[TableName] NOT LIKE 'TT%'
|
||||
AND [d].[TableName] NOT LIKE 'LD[_]%'
|
||||
GROUP BY [d].[schemaName],
|
||||
[d].[TableName],
|
||||
[d].[dbName]
|
||||
HAVING COUNT(1) < @cntLimit
|
||||
ORDER BY [cnt] DESC
|
||||
|
||||
/*All tables in the activePos* databases are considered to be taken in account*/
|
||||
UPDATE [d]
|
||||
SET [d].[toIgnore] = 0
|
||||
FROM [dbo].[octpdba-931-detail] [d]
|
||||
INNER JOIN [#toUpdate] [t] ON [t].[TableName] = [d].[TableName] AND [t].[schemaName] = [d].[schemaName] AND [t].[dbName] = [d].[dbName]
|
||||
WHERE [d].[dbName] NOT LIKE 'activepos%'
|
||||
AND [d].[toIgnore] = 1;
|
||||
|
||||
/*All tables in the DEL schema are ignored*/
|
||||
UPDATE [d]
|
||||
SET [d].[toIgnore] = 1
|
||||
FROM [dbo].[octpdba-931-detail] [d]
|
||||
WHERE [d].[schemaName] = 'del'
|
||||
AND [d].[toIgnore] = 0;
|
||||
|
||||
SELECT [d].[schemaName],
|
||||
[d].[TableName],
|
||||
[d].[dbName],
|
||||
COUNT(1) AS [cnt]
|
||||
FROM [dbo].[octpdba-931-detail] [d]
|
||||
WHERE [d].[toIgnore] = 01
|
||||
GROUP BY [d].[schemaName],
|
||||
[d].[TableName],
|
||||
[d].[dbName]
|
||||
--HAVING COUNT(1) < 300
|
||||
ORDER BY [cnt],
|
||||
[d].[dbName],
|
||||
[d].[schemaName],
|
||||
[d].[TableName] DESC
|
||||
|
||||
@@ -0,0 +1,149 @@
|
||||
/*=============================================================================
|
||||
|
||||
Fetch total db size and list every tables size in a selected list of dbs
|
||||
|
||||
Parameters
|
||||
----------------------
|
||||
|
||||
|
||||
Context
|
||||
----------------------
|
||||
in all pharmacies and central
|
||||
|
||||
Creation : 24.12.2024 / TSC
|
||||
Modifications:
|
||||
|
||||
=============================================================================*/
|
||||
|
||||
--#region db list
|
||||
DECLARE @q NVARCHAR(MAX);
|
||||
DECLARE @dbFilter TABLE(dbName VARCHAR(255)NOT null);
|
||||
INSERT INTO @dbFilter
|
||||
(
|
||||
[dbName]
|
||||
)
|
||||
SELECT d.[name]
|
||||
FROM sys.databases d
|
||||
WHERE d.[name] LIKE 'activePos%'
|
||||
OR
|
||||
d.[name] IN (
|
||||
'arizona'
|
||||
,'arizonaCust'
|
||||
,'arizonaLd'
|
||||
)
|
||||
|
||||
IF OBJECT_ID('tempdb..#tblSize')IS NOT NULL BEGIN;
|
||||
DROP TABLE #tblSize;
|
||||
END;
|
||||
|
||||
IF OBJECT_ID('tempdb..#dbs')IS NOT NULL BEGIN
|
||||
DROP TABLE #dbs;
|
||||
END
|
||||
|
||||
CREATE TABLE #tblSize ( [serverName] nvarchar(128), [dbName] nvarchar(128), [schemaName] nvarchar(128), [TableName] nvarchar(128), [RowCounts] bigint, [TotalSpaceMB] decimal(26,6), [UsedSpaceMB] decimal(26,6), [DataSpaceMB] decimal(26,6) )
|
||||
CREATE TABLE #dbs ( [database_name] NVARCHAR(128) NOT NULL, [log_size_mb] DECIMAL(18,2) NOT NULL, [row_size_mb] DECIMAL(18,2) NOT NULL, [total_size_mb] DECIMAL(18,2) NOT NULL );
|
||||
|
||||
INSERT INTO [#dbs] ([database_name], [log_size_mb], [row_size_mb], [total_size_mb])
|
||||
SELECT
|
||||
[database_name] = DB_NAME(f.[database_id])
|
||||
, log_size_mb = CAST(SUM(CASE WHEN f.[type_desc] = 'LOG' THEN [F].[size] ELSE 0 END) * 8. / 1024 AS DECIMAL(18,2))
|
||||
, row_size_mb = CAST(SUM(CASE WHEN f.[type_desc] = 'ROWS' THEN [F].[size] ELSE 0 END) * 8. / 1024 AS DECIMAL(18,2))
|
||||
, total_size_mb = CAST(SUM([F].[size]) * 8. / 1024 AS DECIMAL(18,2))
|
||||
FROM [sys].[master_files] F
|
||||
JOIN @dbFilter df ON df.[dbName] = DB_NAME(f.[database_id])
|
||||
GROUP BY F.[database_id]
|
||||
ORDER BY [total_size_mb] DESC;
|
||||
--#endregion db list
|
||||
|
||||
--#region db size
|
||||
IF OBJECT_ID('tempdb..#FileSize')IS NOT NULL BEGIN;
|
||||
DROP TABLE #FileSize;
|
||||
END;
|
||||
CREATE TABLE #FileSize(
|
||||
[dbname] NVARCHAR(128) NOT NULL,
|
||||
[filename] NVARCHAR(128) NOT NULL,
|
||||
[type_desc] NVARCHAR(128) NOT NULL,
|
||||
CurrentSizeMB DECIMAL(10,2) NOT NULL,
|
||||
FreeSpaceMB DECIMAL(10,2) NULL
|
||||
);
|
||||
INSERT INTO #FileSize([dbname], [filename], [type_desc], CurrentSizeMB, FreeSpaceMB)
|
||||
EXECUTE sp_msforeachdb
|
||||
'use [?];
|
||||
SELECT DB_NAME() AS DbName,
|
||||
name AS FileName,
|
||||
type_desc,
|
||||
size/128.0 AS CurrentSizeMB,
|
||||
size/128.0 - CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT)/128.0 AS FreeSpaceMB
|
||||
FROM sys.database_files
|
||||
WHERE type IN (0,1);';
|
||||
--#endregion db size
|
||||
|
||||
--#region db size
|
||||
SELECT
|
||||
d.[name] AS [dbname]
|
||||
,f.[physical_name] AS physicalFileName
|
||||
,f.[name] AS logicalFileName
|
||||
,CAST(f.SIZE * 8. / 1024 AS DECIMAL(18,2)) AS fileSizeMB
|
||||
,fs.[FreeSpaceMB] AS FreeSpaceInFileMB
|
||||
,fs.[CurrentSizeMB] - fs.[FreeSpaceMB] AS SpaceUsedMB
|
||||
,CAST((fs.[CurrentSizeMB] - fs.[FreeSpaceMB]) * 100 / (CAST(f.SIZE * 8. / 1024 AS DECIMAL(18,2))) AS NUMERIC(6,2)) AS fileSpaceUsedPercent
|
||||
,d2.[total_size_mb] AS totalDbSizeMB
|
||||
FROM [sys].[master_files] F
|
||||
JOIN [sys].[databases] d ON d.[database_id] = f.[database_id]
|
||||
JOIN [#dbs] [d2] ON d2.[database_name] = d.[name]
|
||||
LEFT JOIN [#FileSize] fs ON fs.[FileName] = f.[name] AND fs.[dbName] = d.[name]
|
||||
WHERE f.[type_desc] IN (
|
||||
'ROWS' --mdf
|
||||
)
|
||||
ORDER BY [d].[name] DESC, f.[name] ASC ;
|
||||
--#endregion db size
|
||||
|
||||
--#region tables list
|
||||
SET @q ='';
|
||||
DECLARE @tplTbl NVARCHAR(MAX)='
|
||||
USE @db@
|
||||
|
||||
INSERT INTO #tblSize(
|
||||
[serverName],
|
||||
[dbName],
|
||||
[schemaName] ,
|
||||
[TableName] ,
|
||||
[RowCounts] ,
|
||||
[TotalSpaceMB] ,
|
||||
[UsedSpaceMB] ,
|
||||
[DataSpaceMB]
|
||||
)
|
||||
SELECT @@SERVERNAME as serverName,
|
||||
DB_NAME() as dbName,
|
||||
SCHEMA_NAME(t.schema_id) as schemaName,
|
||||
t.name AS TableName,
|
||||
MAX([p].[rows]) AS RowCounts,
|
||||
(SUM([a].[total_pages]) * 8) / 1024.0 AS TotalSpaceMB,
|
||||
(SUM([a].[used_pages]) * 8) / 1024.0 AS UsedSpaceMB,
|
||||
(SUM([a].[data_pages]) * 8) / 1024.0 AS DataSpaceMB
|
||||
FROM sys.tables t
|
||||
INNER JOIN sys.indexes i
|
||||
ON t.object_id = i.object_id
|
||||
INNER JOIN sys.partitions p
|
||||
ON i.object_id = p.object_id
|
||||
AND i.index_id = p.index_id
|
||||
INNER JOIN sys.allocation_units a
|
||||
ON [p].[partition_id] = [a].[container_id]
|
||||
WHERE i.object_id > 255
|
||||
--AND i.index_id IN ( 0, 1 )
|
||||
GROUP BY t.name, t.schema_id
|
||||
ORDER BY TotalSpaceMB DESC;
|
||||
|
||||
';
|
||||
SELECT @q = @q + REPLACE(@tplTbl, '@db@', [dbName])
|
||||
FROM @dbFilter;
|
||||
|
||||
--PRINT @q
|
||||
EXEC [sys].[sp_executesql]
|
||||
@q
|
||||
,N''
|
||||
;
|
||||
SELECT *
|
||||
FROM [#tblSize]
|
||||
--#endregion tables list
|
||||
|
||||
Reference in New Issue
Block a user