LoginSignup
1
3

More than 5 years have passed since last update.

SQLServerでのデータベース?使用率をパーセンテージ表示してみる

Last updated at Posted at 2019-01-10
はじめに

SQLServerのことはほとんど分かってません。初心者なので。

なんやかんやでSQLServerを触ることになってタイトルの通りの処理をしないといけないことに。
まだ完全に完成してないので、後で弄るとき困るといけないのでメモ書き程度に置いておきます。


容量の確認
  • とりあえず確認用に作ったデータベース「testdb」に適当に詰め込み容量を確認する。
kakunin.sql
use testdb
go
EXEC sp_spaceused
go
実行結果.txt
database_name                                                                                                                    database_size      unallocated space
-------------------------------------------------------------------------------------------------------------------------------- ------------------ ------------------
testdb                                                                                                                           9232.00 MB         780.26 MB
reserved      data          index_size    unused
------------- ------------- ------------- -------------
61176 KB      59248 KB      1304 KB       624 KB

database_nameやdatabase_sizeは分かるけどそれ以外はなんて書いてあるのか分からない(英語力皆無)
ということで調べていく。
見るところはやっぱりMicrosoft Docs

列名    説明    
database_name 現在のDB名
database_size DBサイズ(データ+ログ)
unallocated space 未割当の領域
reserved DB内で割り当てられた領域
data データ使用領域の合計
index_size インデックスの使用領域の合計
unused DB内でオブジェクト用に予約されているが使用されていない領域の合計

・・・なるほど?少しだけ分かった気がする。


使用率を調べるには

ここから使用率を調べるために資料を漁っていると
FILEPROPERTY ( file_name , property ) というものを発見。

SpaceUsedというプロパティがあり指定したファイルで使用されている容量を確認できるらしい。


組んでみた
  • ということで組んでみた組んでもらった
usedspace.sql
use testdb
go
select
name,
size * 8/1024 AS [ファイルサイズ(MB)] ,
FILEPROPERTY(file_name(fileid),'SpaceUsed')*8192.0/power(1024.0,2) AS [使用領域(MB)] ,
FLOOR((FILEPROPERTY(file_name(fileid),'SpaceUsed')*8192.0/power(1024.0,2))
/(convert(numeric(20),size) * 8192/1024/1024) * 100 ) as [データ使用率(%)]
from dbo.sysfiles
go
実行結果.txt
name                                                                                                                             ファイルサイズ(MB) 使 用領域(MB)                                 使用率(%)
-------------------------------------------------------------------------------------------------------------------------------- ----------- ---------------------------------------- ----------------------------------------
testdb                                                                                                                                   840                60.1250000000000000000000                                7.1577381
testdb_log                                                                                                                              8392                 9.7109375000000000000000                                 .1157166

おわり

ちゃんと動いてる・・・けどdatabase_size単体での使用率は出せないのかな?そこはよくわかりません。

そこより気になるのが小数点以下の0が多いことだけど、切り上げ、切り捨て、四捨五入にはFLOORやCEILINGやROUNDというものがあるらしい。
ここはまた今度調べてみたいところ。

とりあえず使用率の表示はできたからここからバッチファイルかPowershellで使用率を取り出して云々しないといけないから頑張ろう。

1
3
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
1
3