SQL Server - Calculo de la tendencia de crecimiento de una base de datos

 
Vista:
sin imagen de perfil
Val: 19
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Calculo de la tendencia de crecimiento de una base de datos

Publicado por OodboO (23 intervenciones) el 13/05/2019 23:52:31
Hola amigos!!!

como puedo obtener la tendencia de crecimiento de una base de datos en particular ?? no se en 1 mes creció un 5%, en 4 meses crecio un 8% , y hacer un calculo por ejemplo....en 10 meses no voy a tener disco disponible


alguna herramienta Open source???? , ojo que el motor de datos es SQLServer!!!


muchas gracias por sus respuestas!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Calculo de la tendencia de crecimiento de una base de datos

Publicado por Isaias (4558 intervenciones) el 15/05/2019 00:52:32
Si, es muy simple, saca el HISTORIAL de respaldos (que espero que tengas) y ahi podras ver cuanto ha crecido.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
       msdb.dbo.backupset.database_name,
       msdb.dbo.backupset.backup_start_date,
       msdb.dbo.backupset.backup_finish_date,
       msdb.dbo.backupset.expiration_date,
       CASE msdb..backupset.type
           WHEN 'D'
           THEN 'Database'
           WHEN 'L'
           THEN 'Log'
       END AS backup_type,
       msdb.dbo.backupset.backup_size,
       msdb.dbo.backupmediafamily.logical_device_name,
       msdb.dbo.backupmediafamily.physical_device_name,
       msdb.dbo.backupset.name AS backupset_name,
       msdb.dbo.backupset.description
FROM msdb.dbo.backupmediafamily
     INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id
WHERE(CONVERT(DATETIME, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7)
ORDER BY msdb.dbo.backupset.database_name,
         msdb.dbo.backupset.backup_finish_date;

¿No haces BACKUP?

Entonces, crea un job que todos los 15 de mes te obtenga la capacidad de almacenamiento de tus bases y listo, tendrás datos para poder convertir en informacion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
USE [TEST]
GO
CREATE PROCEDURE [dbo].[SaveHistoryDBfileSize]
	@ndays INT = 366	-- Delete records older than this number of days
AS
SET NOCOUNT ON;
BEGIN
	DECLARE @SQL NVARCHAR(MAX);
	DECLARE @Message NVARCHAR(MAX);
 
	BEGIN TRY
	IF OBJECT_ID(N'[TEST].[dbo].[TblSaveHistoryDBfileSize]') IS NULL
	BEGIN
		CREATE TABLE [TEST].[dbo].[TblSaveHistoryDBfileSize]
		(
			[CurrentDate] DATETIME NULL
			, [DBName] SYSNAME NOT NULL
			, [database_id] INT NOT NULL
			, [FileID] INT NULL
			, [FileType] TINYINT NULL
			, [LogicalName] SYSNAME NOT NULL
			, [PhysicalName] NVARCHAR(260) NULL
			, [FileSizeMB] DECIMAL(38, 0) NULL
			, [MaxSize] INT NULL
			, [PercentGrowthEnabled] BIT NULL
			, [GrowthRate] INT NULL
			, [Drive] NVARCHAR(1) NULL
			, [FreeDiskSpaceGB] DECIMAL(38, 0) NULL
		) ON [PRIMARY]
	END
 
	SET @SQL =
	';WITH dbmf
	AS
	(
	SELECT
		GETDATE() AS [CurrentDate]
		, db.[name] AS [DBName]
		, mf.[database_id] AS [DataBaseID]
		, mf.[file_id] AS [FileID]
		, mf.[type] AS [FileType]
		, mf.[name] AS [LogicalName]
		, mf.[physical_name] AS [PhysicalName]
		, CAST(mf.[size] AS DECIMAL(38, 0)/128. AS [FileSizeMB]
		, mf.[max_size] AS [MaxSize]
		, mf.[is_percent_growth] AS [PercentGrowthEnabled]
		, mf.[growth] AS [GrowthRate]
		, substring(mf.[physical_name],1,1) AS [Drive]
	FROM sys.sysdatabases db
	JOIN sys.master_files mf ON mf.database_id = db.[dbid]
	--WHERE db.[dbid] > 4
	)
	SELECT
		[CurrentDate]
		, [DBName]
		, [DatabaseID]
		, [FileID]
		, [FileType]
		, [LogicalName]
		, [PhysicalName]
		, [FileSizeMB]
		, [MaxSize]
		, [PercentGrowthEnabled]
		, [GrowthRate]
		, [Drive]
		, (SELECT free_mb
			FROM [TEST].[dbo].drive_info()
			WHERE letter = [Drive]
			)/1024 AS FreeDiskSpaceGB
	FROM dbmf
	ORDER BY [DBName];'
 
	INSERT [TEST].[dbo].[TblSaveHistoryDBfileSize]
	EXEC (@SQL);
 
	-- Delete old records ----------------------------------------
	DELETE
	FROM [TEST].[dbo].[TblSaveHistoryDBfileSize]
	WHERE [CurrentDate] < DATEADD(day, -@ndays, GETDATE());
	PRINT '---> Deleted ' + CAST(@@ROWCOUNT AS NVARCHAR) + '  records.';
 
	END TRY
 
	BEGIN CATCH
		SET @Message = CHAR(13) + N'Error message: ' + ERROR_MESSAGE() + CAHAR(13) +
		'Error number = ' + CAST(ERROR_NUMBER() AS NVARCHAR) + CHAR(13) +
		'Error Procedure: ''' + ISNULL(ERROR_PROCEDURE(), N'---') + CHAR(13) +
		'Error Line = ' + ISNULL(CAST(ERROR_LINE() AS NVARCHAR), N'---');
		PRINT @Message;
	END CATCH
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 19
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Calculo de la tendencia de crecimiento de una base de datos

Publicado por OodboO (23 intervenciones) el 15/05/2019 21:22:52
Colegas !!! muchas gracias!!!!, voy a poner en practica cualquier cosa les aviso!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar