Comme indiqué dans d'autres réponses ici, n'essayez pas de supprimer l'intégralité de la base de données msdb.
Vous souhaiterez peut-être supprimer certains enregistrements d'historique stockés dans la base de données msdb, puis réduire la base de données si vous avez besoin d'économiser de l'espace. Sachez que je ne vous conseille pas de le faire car la base de données devra très certainement croître à nouveau, à moins que vous ne gériez étroitement l'espace utilisé par msdb de manière continue.
Vous pouvez supprimer l'historique de la base de données msdb à l'aide de ces procédures stockées:
USE msdb;
EXEC dbo.sp_delete_backuphistory @oldest_date = '2018-01-01T00:00:00';
EXEC dbo.sp_purge_jobhistory @job_name = NULL
, @job_id = NULL
, @oldest_date = '2018-01-01T00:00:00';
Pour réduire msdb, vous pouvez utiliser ceci:
USE msdb;
DBCC SHRINKFILE (MSDBData, 0);
DBCC SHRINKFILE (MSDBLog, 0);
Les opérations ci-dessus tenteront de réduire les données msdb et les fichiers journaux à la plus petite taille possible. Pour le fichier journal, la "plus petite taille possible" est limitée par le fichier journal virtuel le plus récemment alloué.
Pour info, vous pouvez voir combien d'espace est consommé dans une base de données en exécutant le code suivant:
USE <database_name>;
DECLARE @Schema sysname;
DECLARE @Table sysname;
DECLARE @DSName sysname;
--if you're interested in a subset of the objects in a database,
--specify that subset by modifying these variables. @DSName is
--the name of a filegroup, or possibly a partition.
SET @Schema = NULL;
SET @Table = NULL;
SET @DSName = NULL;
SELECT DataSpace = ds.name
, ObjectName = QUOTENAME(s.name) + '.' + QUOTENAME(o.name)
, IndexName = i.name
, IndexType = i.type_desc
--, total_pages
--, used_pages
--, data_pages
, TotalMB = CONVERT(INT, total_pages * 8192E0 / 1048576)
, UsedMB = CONVERT(INT, used_pages * 8192E0 / 1048576)
, DataMB = CONVERT(INT, data_pages * 8192E0 / 1048576)
, [rows]
--, i.*
FROM sys.allocation_units au
INNER JOIN sys.data_spaces ds ON au.data_space_id = ds.data_space_id
INNER JOIN sys.partitions p ON (au.container_id = p.hobt_id AND (au.type = 1 OR au.type = 3)) OR (au.container_id = p.partition_id AND au.type = 2)
INNER JOIN sys.indexes i ON p.index_id = i.index_id AND p.object_id = i.object_id
INNER JOIN sys.objects o ON p.object_id = o.object_id
INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE /*o.is_ms_shipped = 0
AND total_pages > 128
AND */(ds.name = @DSName OR @DSName IS NULL)
AND (s.name = @Schema OR @Schema IS NULL)
AND (o.name = @Table OR @Table IS NULL)
ORDER BY ds.name, o.name, i.name