Monday, July 8, 2013

sql server backup size


the output of the system command sp_spaceused gives the reserved value of the database which indicates the total size of all the pages in the database. we can use the same value to estimate the database backup size.
below query extracted from the sp_spaceused which gives the list of all the databases and their reserved size.
use master
create table dbo.all_db_size (dbname varchar(256),reserved varchar(256),data varchar(256),index_size varchar(90),unused varchar(90))

EXECUTE sp_MSforeachdb '
use [?]
declare @reservedpages  bigint ,@usedpages  bigint,@pages bigint
    select @reservedpages = sum(a.total_pages),
        @usedpages = sum(a.used_pages),
        @pages = sum(
                CASE
                    -- XML-Index and FT-Index internal tables are not considered "data", but is part of "index_size"
                    When it.internal_type IN (202,204,211,212,213,214,215,216) Then 0
                    When a.type <> 1 Then a.used_pages
                    When p.index_id < 2 Then a.data_pages
                    Else 0
                END
            )
    from sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id
        left join sys.internal_tables it on p.object_id = it.object_id
insert into master.dbo.all_db_size (dbname,reserved,data,index_size,unused)
    select db_name() as dbname,
        reserved_kb = ltrim(str(@reservedpages * 8192 / 1024.,15,0) ),
        data_kb = ltrim(str(@pages * 8192 / 1024.,15,0) ),
        index_size_kb = ltrim(str((@usedpages - @pages) * 8192 / 1024.,15,0) ),
        unused_kb = ltrim(str((@reservedpages - @usedpages) * 8192 / 1024.,15,0) )
       
        '
       
select * from dbo.all_db_size

No comments:

Post a Comment

Featured Post

SQL Server AWS Migration BCP

stored procedure to generate BCP scritps to migrate the SQL Server database. Developed this stored procedure on my labs to simulate t...

Contributors