LoginSignup
0
0

T-SQL で Azure SQL MI のストレージ容量を確認する

Posted at

はじめに

Azure SQL MI インスタンスの予約ストレージの容量、使用済み容量、空き容量は、Azure ポータルでカンタンに確認できます。

  • SQL マネージド インスタンス > 概要
    • 記憶域使用率

image.png

  • SQL マネージド インスタンス > [監視] メトリック
    • reserved_storage_mb ... 予約ストレージの容量
    • storage_space_used_mb ... 使用済み容量

image.png

これを PowerShell スクリプトなどでも確認したいです。

たとえば、空き容量が気になる以下のような機会でしょうか。

  • DB をインポートする時
  • DB をリストアする時

いずれも、十分な空き容量がない場合、「マネージド インスタンスはストレージ制限に達しました。...」というようなエラーメッセージが出力されます。

Invoke-Sqlcmd : The managed instance has reached its storage limit.The storage usage for the managed instance cannot exceed 98304 MBs. Target database size 76936, current database size 24, used storage space 77056

また、DB をドロップした後、実際のコマンド (たとえば DROP DATABASE とか) が完了していても、Azure 内部では DB 削除時点のバックアップ取得などの処理が実施されているため、その DB が使用していた領域が解放されるまでにしばらく時間がかかる場合があります。

image.png

image.png

このようなことがあるため、事前に Azure SQL MI インスタンスの予約ストレージ容量、使用済み容量、空き容量を把握しておきたいのです。

どこから情報を入手するか

sys.server_resource_stats ビューから入手できます。このビューは、15 秒ごとに 1 行のレポートが作成され、5 ~ 10 分以内に収集、集計、更新されます。
よって、このビューから最新の行を参照すれば、直近の情報が得られると考えられます。

注目すべきは、以下のカラム。
reserved_storage_mb から storage_space_used_mb を減算することで、空き容量が確認できますね。

カラム データ型 説明
reserved_storage_mb bigint Azure SQL MI インスタンスの予約ストレージ容量 (MB)
storage_space_used_mb decimal(18,2) 使用済み容量 (MB)
end_time datetime 15 秒ごとのレポート間隔の終了を示す日時 (UTC)

ストレージ容量を確認するクエリ

以下のクエリで、Azure SQL MI インスタンスの予約ストレージ容量、使用済み容量、空き容量を確認します。

Check Storage Space
SELECT TOP 1
  reserved_storage_mb        -- 予約ストレージ容量
  ,storage_space_used_mb     -- 使用済み容量
  ,CAST((reserved_storage_mb - storage_space_used_mb) AS decimal(18,2))
   AS storage_space_free_mb  -- 空き容量
FROM
  sys.server_resource_stats
ORDER BY
  end_time DESC

以下は、筆者の環境で上記クエリを実行すると、以下のような結果が得られました。:heart_eyes:

image.png

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0