এর দ্বারা সৃষ্ট স্থানের সমস্যাগুলি কীভাবে ঠিক করা যায় SQL Server

এখন শেয়ার:

বেশ কয়েকবার SQL Server ডিস্কগুলিতে স্থান সমস্যা হওয়ার কারণ হতে পারে। এই নিবন্ধে, আমরা দেখব যে এই সমস্যাটির মূল কারণগুলি কী এবং আমরা কীভাবে এটি ঠিক করতে পারি।

আপনার SQL Server স্থান প্রয়োজন।

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

ক্লিনআপ টাস্ক কাজ করছে না

যদি আপনি এসকিউএল এর নেটিভ রক্ষণাবেক্ষণ পরিকল্পনাগুলি আপনার ব্যাকআপ করতে ব্যবহার করেন SQL server ডাটাবেসগুলিতে, সম্ভাবনা থাকতে পারে যে এই রক্ষণাবেক্ষণের পরিকল্পনাগুলির ক্লিনআপ মডিউলটি তাদের কাজটি করছে না। ডিস্কের স্থান শেষ হয়ে গেলে আপনি বুঝতে পারবেন যে পুরানো ব্যাকআপ ফাইলগুলি সঠিকভাবে পরিষ্কার করা হয়নি। আপনি রক্ষণাবেক্ষণ পরিকল্পনায় ক্লিনআপ মডিউলটি অন্তর্ভুক্ত করতেন। এত কিছুর পরেও আপনি ভাবছেন কেন এটি কাজ করছে না?

ব্যাকআপ ফাইলগুলি মুছতে আপনি সঠিক ফোল্ডারটি উল্লেখ করেছেন কিনা তা পরীক্ষা করে দেখুন, ব্যাকআপ ফাইলগুলি মুছতে আপনি সঠিক ফাইল এক্সটেনশনের উল্লেখ করেছেন কিনা তা পরীক্ষা করে দেখুন, বিন্দু দিয়ে "চেষ্টা করুন"। এবং ফাইল এক্সটেনশনে বিন্দু ছাড়াই।

লগ ফাইলগুলি ডাটাবেস ফাইলের চেয়ে বিশাল

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

অব্যবহৃত ডাটাবেস ফাইল

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

DECLARE @dpth NVARCHAR(512)

EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
    ,N'Software\Microsoft\MSSQLServer\MSSQLServer'
    ,N'DefaultData'
    ,@dpth OUTPUT

DECLARE @lpth NVARCHAR(512)

EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
    ,N'Software\Microsoft\MSSQLServer\MSSQLServer'
    ,N'DefaultLog'
    ,@lpth OUTPUT

DECLARE @bk NVARCHAR(512)

EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
    ,N'Software\Microsoft\MSSQLServer\MSSQLServer'
    ,N'BackupDirectory'
    ,@bk OUTPUT

DECLARE @md NVARCHAR(512)

EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
    ,N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters'
    ,N'SqlArg0'
    ,@md OUTPUT

SELECT @md = substring(@md, 3, 255)

SELECT @md = substring(@md, 1, len(@md) - charindex('\', reverse(@md)))

DECLARE @ml NVARCHAR(512)

EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
    ,N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters'
    ,N'SqlArg2'
    ,@ml OUTPUT

SELECT @ml = substring(@ml, 3, 255)

SELECT @ml = substring(@ml, 1, len(@ml) - charindex('\', reverse(@ml)))

SET @dpth = isnull(@dpth, @md)
SET @lpth = isnull(@lpth, @ml)

PRINT @dpth
PRINT @lpth

EXEC sp_configure 'show advanced'
    ,1

RECONFIGURE

EXEC sp_configure 'xp_cmdshell'
    ,1

RECONFIGURE

IF object_id('tempdb.dbo.#table1') IS NOT NULL
    DROP TABLE #table1

CREATE TABLE #table1 (
    [filename] VARCHAR(2000)
    ,depth INT
    ,isFile INT
    )

SET @dpth = 'DIR ' + @dpth + '\*.mdf /b /s'
SET @lpth = 'DIR ' + @lpth + '\*.ldf /b /s'

INSERT INTO #table1
EXEC xp_DirTree @dpth
    ,1
    ,1

INSERT INTO #table1
EXEC xp_DirTree @lpth
    ,1
    ,1

DELETE
FROM #table1
WHERE isFile <> 1

UPDATE #table1
SET filename = rtrim(filename)

CREATE TABLE t_list (
    filepath VARCHAR(2000)
    ,sizeinmb DECIMAL(18, 2)
    )

INSERT INTO t_list (filepath)
SELECT otable.filename AS orphaned_files
FROM #table1 otable
LEFT OUTER JOIN master.dbo.sysaltfiles db ON rtrim(db.filename) = otable.filename
WHERE db.dbid IS NULL
ORDER BY 1

DECLARE @sizeingb AS DECIMAL(18, 2)
DECLARE @filepath AS VARCHAR(2000)

DECLARE db_cursor CURSOR
FOR
SELECT filepath
FROM t_list

OPEN db_cursor

FETCH NEXT
FROM db_cursor
INTO @filepath

WHILE @@FETCH_STATUS = 0
BEGIN
    CREATE TABLE t_temp (c1 VARCHAR(2000))

    DECLARE @cmd AS VARCHAR(3000)

    SET @cmd = 'dir ' + @filepath

    PRINT @cmd

    INSERT INTO t_temp
    EXEC master.dbo.xp_cmdshell @cmd

    DELETE
    FROM t_temp
    WHERE c1 NOT LIKE '%1 File(s)%bytes'

    DECLARE @size AS DECIMAL(18, 2)

    SET @size = (
            SELECT TOP 1 replace(replace(replace(c1, '               1 File(s)    ', ''), ',', ''), ' bytes', '')
            FROM t_temp
            WHERE c1 IS NOT NULL
            )
    SET @size = cast((@size / (1024 * 1024)) AS DECIMAL(18, 2))

    DROP TABLE t_temp

    UPDATE t_list
    SET sizeinmb = @size
    WHERE filepath = @filepath

    FETCH NEXT
    FROM db_cursor
    INTO @filepath
END

CLOSE db_cursor

DEALLOCATE db_cursor

SELECT *
FROM t_list

DROP TABLE t_list

EXEC sp_configure 'show advanced'
    ,1

RECONFIGURE

EXEC sp_configure 'xp_cmdshell'
    ,0

RECONFIGURE

SQL Server ডাটাবেস দুর্নীতি

আপনার ডিস্কের জায়গা পর্যবেক্ষণ এবং রক্ষণাবেক্ষণের পাশাপাশি আপনার ডিস্কের স্বাস্থ্যও পর্যবেক্ষণ করুন। অস্বাস্থ্যকর ডিস্ক আপনার দূষিত করতে পারে SQL Server ডাটাবেস। যদি এটি ঘটে থাকে তবে দয়া করে ডাটাবেস পুনরুদ্ধারের সরঞ্জামটি ব্যবহার করুন DataNumen SQL Recovery থেকে ফিক্স দূষিত SQL Server.

লেখকের ভূমিকা:

নীল ভারলি এর মধ্যে একটি তথ্য পুনরুদ্ধার বিশেষজ্ঞ is DataNumen, ইনক। যা তথ্য পুনরুদ্ধারের প্রযুক্তিগুলির সহ বিশ্বের শীর্ষস্থানীয় মেরামত আউটলুক ইমেল দুর্নীতি এবং এক্সেল পুনরুদ্ধার সফ্টওয়্যার পণ্য। আরো তথ্যের জন্য, যান WWW.datanumen.com

এখন শেয়ার:

মন্তব্যসমূহ বন্ধ করা হয়.