এখানে অন্যান্য উত্তরে কভার হিসাবে, পুরো এমএসডিবি ডাটাবেস মুছতে চেষ্টা করবেন না।
আপনি এমএসডিবি ডাটাবেসে সঞ্চিত নির্দিষ্ট ইতিহাসের রেকর্ডগুলি ফেলে দিতে চান, এবং তারপরে স্থান সংরক্ষণের প্রয়োজন হলে ডাটাবেস সঙ্কুচিত করুন। সচেতন থাকুন, আমি আপনাকে এটি করার পরামর্শ দিচ্ছি না কারণ আপনি যদি চলমান ভিত্তিতে এমএসডিবি দ্বারা ব্যবহৃত স্থানটি ঘনিষ্ঠভাবে পরিচালনা না করেন তবে ডাটাবেসটি অবশ্যই আবার বাড়ার প্রয়োজন।
আপনি এই সঞ্চিত পদ্ধতি ব্যবহার করে এমএসডিবি ডাটাবেস থেকে ইতিহাস সরাতে পারেন:
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';
এমএসডিবি সঙ্কুচিত করতে, আপনি এটি ব্যবহার করতে পারেন:
USE msdb;
DBCC SHRINKFILE (MSDBData, 0);
DBCC SHRINKFILE (MSDBLog, 0);
উপরের ক্রিয়াকলাপগুলি এমএসডিবি ডেটা সঙ্কুচিত করার চেষ্টা করবে এবং ফাইলগুলি সবচেয়ে ছোট আকারে লগ করবে। লগ ফাইলের জন্য, "সামান্যতম আকার সম্ভব" সর্বাধিক বরাদ্দ ভার্চুয়াল লগ ফাইল দ্বারা সীমাবদ্ধ।
এফওয়াইআই, আপনি নিম্নলিখিত কোডটি চালিয়ে একটি ডাটাবেসে কতটা জায়গা ব্যয় করছেন তা দেখতে পাবেন:
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