によって引き起こされるスペースの問題を修正する方法 SQL Server

今すぐ共有:

数回 SQL Server ディスクのスペースの問題の原因である可能性があります。 この記事では、この問題の根本的な原因とその修正方法について説明します。

あなたの SQL Server スペースが必要です。

SQLによって引き起こされるスペースの問題何度も SQL Server ディスク容量が必要になります。 これは、データベース内のデータの増加、縮小されていないログファイル、削除されていないバックアップファイル、または削除されていない不要なデータベースファイルが原因である可能性があります。 理由が何であれ、 SQL Server、ディスク上のスペースはデータベーストランザクションにとって非常に重要です。

クリーンアップタスクが機能しない

SQLのネイティブメンテナンスプランを使用してバックアップする場合 SQL server データベースの場合、これらの保守計画のクリーンアップモジュールがタスクを実行していない可能性があります。 ディスクの容量が不足すると、古いバックアップファイルが適切にクリーンアップされていないことがわかります。 メンテナンス計画にクリーンアップモジュールを含める必要があります。 それにもかかわらず、なぜそれが機能しなかったのか疑問に思いますか?

バックアップファイルを削除するための正しいフォルダについて言及したかどうかを確認し、バックアップファイルを削除するための正しいファイル拡張子について言及したかどうかを確認し、ドット「。」で試してください。 ファイル拡張子にドットはありません。

ログファイルはデータベースファイルよりも巨大です

SQL Server データベーススペースの問題の最も一般的な原因 SQL Server 監視対象外のログファイルとtempdbファイルについても同様です。SQLサービスが再起動されるたびにtempdbは元のサイズに縮小されますが、tempdbの増加を監視し、ディスク容量を使い果たしそうになったら縮小するのが良いでしょう。tempdbと同様に、ログファイルも常に監視する必要があります。ログファイルのサイズを常に最小限に保つために、ログのバックアップを必ず用意してください。

未使用のデータベースファイル

多くの未使用および未接続のデータベースファイルがディスク上にあり、スペースを浪費している可能性があります。 でスクリプトを実行します 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.

著者紹介:

Neil Varleyは、のデータ復旧の専門家です。 DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 Outlookの電子メールの破損を修復する と優れた回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com

今すぐ共有:

コメントは締め切りました。