web-dev-qa-db-ja.com

Amazon RDSをマネージドサービスとしてSQL Server 2012を使用してデータベースのスペース使用アラートを設定するにはどうすればよいですか?

初期サイズが1000 GBに設定されているデータベースがあります。最大スペースが使用され、データベースサイズが1000 GBに近づいたとき(たとえば、995または994 GBに達したとき)にアラートを設定できる方法はありますか?事前にディスクスペース。突然のダウンタイムなし。

SQL Server 2012とAmazon RDSをマネージドサービスとして使用しています。

前もって感謝します。

2
Sayantani Nath

毎日実行されるSQL Serverエージェントジョブを作成し、以下のようなクエリを使用して空き領域を確認できます。

USE [YourDatabaseName]

/* Size in MB */
DECLARE @Info TABLE (
    [Size]          decimal(12,2),
    [SpaceUsed]     decimal(12,2),
    [SpaceFree]     decimal(12,2)
)

insert @Info ([Size], [SpaceUsed], [SpaceFree])
SELECT
    [Size] = ISNULL(CONVERT(decimal(12,2),round(f.size/128.000,2)),0)
    ,[SpaceUsed] = ISNULL(CONVERT(decimal(12,2),round(fileproperty(f.name,'SpaceUsed')/128.000,2)),0)
    ,[SpaceFree] = ISNULL(CONVERT(decimal(12,2),round((f.size-fileproperty(f.name,'SpaceUsed'))/128.000,2)),0)
    --,GETDATE() as DT
FROM sys.database_files f
    CROSS APPLY sys.dm_os_volume_stats(DB_ID(), f.file_id) vs
WHERE f.name = 'YourFileLogicalName'

/* Free space less than  5GB */
If (SELECT TOP 1 [SpaceFree] FROM @Info) < 5120 BEGIN
    /*
        Anything is suitable for you:
        - send email
        - raiserror
        - write log
        .......

    */
    EXECUTE dbo.KickDBAToAwakeHim
END

たぶん、スペースがどのように変更されたかについての情報を得るために、いくつかのテーブルを作成してそこに毎日値を書き込むのは理にかなっています。

1
Denis Rubashkin