এমএসডিবি মোছা কি ঠিক আছে?


9

আমি কোনও ডিবিএ নই, কেবল এমএসডিবি এটিই গুগল করেছি যে এটি মূলত এর কাজ এবং ইতিহাসের এসকিউএল এজেন্টের একটি ডিবি, এখন আমি আমার ক্লাউড সার্ভারে স্থান ছাড়িয়ে চলেছি এবং আমার এমএসডিবি বছরের 2017 সালের এক বছরের মূল্য রয়েছে , এটি মুছে ফেলা ঠিক কি আমি ব্যাকআপের উদ্দেশ্যে রাখি?

আমার এমএসডিবি একটি 250 গিগাবাইট এইচডিডিতে 93 গিগাবাইট।

উত্তর:


14

ডক্স (জোর খনি) তে msdbবর্ণিত হিসাবে আপনি ডাটাবেসটি ফেলে দিতে পারবেন না :

বিধিনিষেধ

নিম্নলিখিত অপারেশনগুলি এমএসডিবি ডাটাবেসে সম্পাদন করা যাবে না:

  • জোট পরিবর্তন করা হচ্ছে। ডিফল্ট কোলেশন হ'ল সার্ভার কোলেশন।

  • ডাটাবেস বাদ দেওয়া হচ্ছে।

  • অতিথি ব্যবহারকারীকে ডাটাবেস থেকে বাদ দেওয়া হচ্ছে।

  • পরিবর্তন ডেটা ক্যাপচার সক্ষম।

  • ডাটাবেস মিররিংয়ে অংশ নিচ্ছেন।

  • প্রাথমিক ফাইলগ্রুপ, প্রাথমিক ডেটা ফাইল বা লগ ফাইল সরানো হচ্ছে।

  • ডাটাবেস বা প্রাথমিক ফাইলগোষ্ঠীর নামকরণ।

  • অফলাইনে ডাটাবেস সেট করা হচ্ছে।

  • প্রাথমিক ফাইলগ্রুপটি READ_ONLY এ সেট করা হচ্ছে।

সিস্টেমের ডেটাবেসগুলির সাথে হস্তক্ষেপ করা সাধারণত ভাল ধারণা নয়। আপনার স্থান সমস্যাটি কোথায় তা পরীক্ষা করে আপনার ড্রাইভগুলি প্রসারিত করার বিষয়ে বিবেচনা করা উচিত।


আপনার আকারের সমস্যাটি কোথায় তা পরীক্ষা করতে:

  • msdbএই কোয়েরিটি ব্যবহার করে ডাটাবেসের অভ্যন্তরে সারণী এবং সূচি মাপ পরীক্ষা করুন :

    USE msdb
    GO
    
    SELECT 
        t.NAME AS TableName,
        s.Name AS SchemaName,
        p.rows AS RowCounts,
        SUM(a.total_pages) * 8 AS TotalSpaceKB, 
        CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
        SUM(a.used_pages) * 8 AS UsedSpaceKB, 
        CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB, 
        (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
        CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
    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
    LEFT OUTER JOIN 
        sys.schemas s ON t.schema_id = s.schema_id
    GROUP BY 
        t.Name, s.Name, p.Rows
    ORDER BY 
        TotalSpaceMB DESC
    

    যদি sysjobhistoryস্থানটিতে পপ আপ হয় তবে আপনার বর্তমান কাজের ইতিহাস ভাড়া নীতি পর্যালোচনা করুন এবং নিশ্চিত করুন যে আপনার কাজের সময়সূচী চেক রয়েছে এবং তাদের প্রয়োজনের চেয়ে বেশি বার ট্রিগার না হচ্ছে।

  • এই প্রশ্নের সাথে ডাটাবেস ডেটা এবং লগ ফাইলের আকারগুলি পরীক্ষা করুন:

    ;with fs
    as
    (
        select database_id, type, size * 8.0 / 1024 size
        from sys.master_files
    )
    select
        name,
        (select sum(size) from fs where type = 0 and fs.database_id = db.database_id) DataFileSizeInMB,
        (select sum(size) from fs where type = 1 and fs.database_id = db.database_id) LogFileSizeInMB
    from 
        sys.databases db
    where
        db.name = 'msdb'
    

    লগ ফাইলের আকার যদি বেশি হয় তবে কোন অপারেশন এটির আকার বাড়িয়েছে এবং এটি সমস্যার সমাধান করেছে তা খুঁজে বের করতে হবে। ফাইল সঙ্কুচিত করা কিছু জায়গা মুক্ত করবে তবে অন্তর্নিহিত সমস্যার সমাধান করবে না।


আমার এমএসডিবি একটি 250 গিগাবাইট এইচডিডিতে 93 গিগাবাইট, অসুস্থ সম্ভবত আমার এইচডিডি প্রসারিত করার কথা বিবেচনা করছে তবে আপাতত অসুস্থতার জন্য পুরানো রেকর্ডগুলি শুদ্ধ করুন ধন্যবাদ।
টেরেন্স ম্যাকগিনিস

5

এখানে অন্যান্য উত্তরে কভার হিসাবে, পুরো এমএসডিবি ডাটাবেস মুছতে চেষ্টা করবেন না।

আপনি এমএসডিবি ডাটাবেসে সঞ্চিত নির্দিষ্ট ইতিহাসের রেকর্ডগুলি ফেলে দিতে চান, এবং তারপরে স্থান সংরক্ষণের প্রয়োজন হলে ডাটাবেস সঙ্কুচিত করুন। সচেতন থাকুন, আমি আপনাকে এটি করার পরামর্শ দিচ্ছি না কারণ আপনি যদি চলমান ভিত্তিতে এমএসডিবি দ্বারা ব্যবহৃত স্থানটি ঘনিষ্ঠভাবে পরিচালনা না করেন তবে ডাটাবেসটি অবশ্যই আবার বাড়ার প্রয়োজন।

আপনি এই সঞ্চিত পদ্ধতি ব্যবহার করে এমএসডিবি ডাটাবেস থেকে ইতিহাস সরাতে পারেন:

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

1

প্রতি মাইক্রোসফট ব্লগ ডকুমেন্টেশন হিসাবে এখানে MSDB মাইক্রোসফট SQL সার্ভার একটি গুরুত্বপূর্ণ সিস্টেম ডাটাবেস। এমএসডিবি ডাটাবেসটি এসকিউএল সার্ভার এজেন্ট দ্বারা মূলত এসকিউএল সার্ভার জবস, মেল, পরিষেবা ব্রোকার, রক্ষণাবেক্ষণ পরিকল্পনা, ব্যবহারকারী এবং সিস্টেম ডাটাবেস ব্যাকআপের ইতিহাস ইত্যাদির মতো সিস্টেমের ক্রিয়াকলাপগুলিতে সঞ্চয় করতে ব্যবহৃত হয় database এটি ডাটাবেস ইঞ্জিন এবং পরিচালনা স্টুডিও দ্বারাও ব্যবহৃত হয়।

কিছু নির্দিষ্ট DMLএবং DDLঅপারেশন রয়েছে যা MSDBডেটাবেসে যেমন সম্পাদন করা যায় না:

  1. আমরা এই ডাটাবেস থেকে টেবিল ড্রপ করতে পারবেন না।
  2. We cannot drop this database
  3. আমরা এই সিস্টেমের ডাটাবেসটি যেতে পারি না off-line
  4. আমরা mirroringএই ডাটাবেসে ডাটাবেস করতে পারি না ।
  5. আমরা renameএই ডাটাবেসের নাম রাখতে পারি না । ইত্যাদি ...
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.