none
SQL Server 2005 / 2008 / 2008R2にて、使用可能な空き領域と使用中のサイズを調べたい RRS feed

  • 質問

  • はじめまして。

    SQL Server 2005 / 2008 / 2008R2を使用し、SharePoint2007を展開している者です。

    SharePointを運用する場合、トランザクションログを定期的に切り捨てる必要がありますが、その処理を自動化するため以下の情報がほしいと考えております。

    1. SQL Server にて書き込み可能な残領域はどれぐらいか?

    → ローカルの場合、エクスプローラにて確認すれば簡単なのですが、リモートでSQL Serverに接続した場合に調べる方法が分かりません。

    2. SQL Server上のデータベース名一覧とその復元モデル、使用中のサイズを取得するにはどうすればよいか?

    → 一応、

    select name, recovery_model from sys.databases;
    use master;
    exec sp_databases;

    とすれば取得できることは分かったのですが、1つのテーブルで取得したほうが何かと便利であると考えますので、一つのテーブルで取得する方法があれば、それを教えてください。

     

    以上質問が2点になりましたが、宜しくお願い致します。

    2010年11月16日 11:20

すべての返信

  • SQL Server 2005での場合、

    >1. SQL Server にて書き込み可能な残領域はどれぐらいか?

    下記を実行した結果より分かるのではないでしょうか。

    use [使用するデータベース]
    exec sp_spaceused

     

    >2. SQL Server上のデータベース名一覧とその復元モデル、使用中のサイズを取得するにはどうすればよいか?

    ひとつのやり方として、sys.databasesとexec sp_databasesを内部結合すれば良いと思います。

    USE master
    go

    set ansi_nulls on
    go
    set quoted_identifier on
    go
        set nocount on

        select
            DATABASE_NAME   = db_name(s_mf.database_id),
            DATABASE_SIZE   = convert(int,
                                        case -- more than 2TB(maxint) worth of pages (by 8K each) can not fit an int...
                                        when convert(bigint, sum(s_mf.size)) >= 268435456
                                        then null
                                        else sum(s_mf.size)*8 -- Convert from 8192 byte pages to Kb
                                        end),
            REMARKS         = convert(varchar(254),null),
            recovery_model  = sysdb.recovery_model
        from
            sys.master_files s_mf
            inner join sys.databases sysdb
            on db_name(s_mf.database_id)=sysdb.name
        where
            s_mf.state = 0 and -- ONLINE
            has_dbaccess(db_name(s_mf.database_id)) = 1 -- Only look at databases to which we have
        group by s_mf.database_id,sysdb.recovery_model
        order by 1

    2010年12月3日 7:17