-3

I have to find the table space of the table.

I tried sp_spaceused 'MyTableName'

But it is not Working. Are there any other ways?

Omega
  • 149
  • 2
  • 11
  • 1
    Here is the best way to do this Refer this link http://www.mssqltips.com/sqlservertip/2393/determine-sql-server-memory-use-by-database-and-object/ – Hardik Parmar Oct 30 '14 at 05:26

2 Answers2

0

This should work fine for you As it works for me.

Solution refered from: How to find the total tablespace usage in SQL Server 2008? by Oleg Dok

set nocount on
declare @indexes table(
    QualifiedName   nvarchar(512),
    IndexId         int,
    FGName          nvarchar(128),      
    Type            nvarchar(50),
    NumKeys         int,
    IndexKB         numeric(28,0),
    UsedKB          numeric(28,0),
    FreeKB          numeric(28,0),
    Rows            numeric(28,0),
    RowModCtr       numeric(28,0),
    OrigFillFactor  int,
    tableid         bigint
    )

insert into @indexes 
select 
    db_name() + '.' + isnull(su.name,'<unknown-user>')  + '.' + so.name + '.' + isnull(i.name,'<Heap>') QualifiedName,
    i.index_id IndexId,
    (select isnull(name,'') from sys.filegroups where data_space_id = i.data_space_id) FGName,
    case
        when so.type = 'V' then 'Indexed View: ' 
        else '' 
    end +   
    case
        when i.index_id = 0 then 'Heap'
        when i.index_id = 1 then 'Clustered' 
        else 'Non Clustered' 
    end Type,
    0 NumKeys,
    a.used_pages* 8 IndexKB, 
    CASE  
         When a.type <> 1 Then a.used_pages * 8 
         When p.index_id < 2 Then a.data_pages  * 8
         Else 0  
        END UsedKB,
    (a.total_pages-a.used_pages)* 8 FreeKB,
    p.rows Rows,
    0 RowModCtr,
    i.fill_factor OrigFillFactor,   
    convert(bigint,db_id()) * power(convert(bigint,2),48) + convert(bigint,su.schema_id) * power(convert(bigint,2),32) +    so.object_id    tableid 
from 
    sys.objects so with (readpast)
    inner join sys.schemas su with (readpast) on su.schema_id = so.schema_id 
    inner join sys.indexes i with (readpast) on so.object_id = i.object_id
    inner join sys.partitions p with (readpast) ON i.object_id = p.object_id and i.index_id = p.index_id
    inner join sys.allocation_units a with (readpast) on p.partition_id = a.container_id 
where
    (so.type = 'U') and a.type_Desc = 'IN_ROW_DATA'
    and isnull(INDEXPROPERTY(i.object_id, i.name, 'IsStatistics'),0) = 0 
    and isnull(INDEXPROPERTY(i.object_id, i.name, 'IsAutoStatistics'),0) = 0 
    and isnull(INDEXPROPERTY(i.object_id, i.name, 'IsHypothetical'),0) = 0                  
order by
    IndexKB desc

select 
    i.QualifiedName,
    i.IndexId,
    i.FGName,
    i.Type,
    i.NumKeys,
    i.IndexKB,  
    (i.UsedKB - isnull(t.s_UsedKB,0)) UsedKB,   
    (i.FreeKB - isnull(t.s_FreeKB,0)) FreeKB,   
    i.Rows,
    i.RowModCtr,
    i.OrigFillFactor    
from
    @indexes i
left outer join (   
        select  tableid, sum(UsedKB) s_UsedKB, sum(FreeKB) s_FreeKB
        from    @indexes
        where   IndexId > 1
        group by tableid
)   t   on  t.tableid = i.tableid
        and i.IndexId   <= 1
order by
    IndexKB desc
Community
  • 1
  • 1
OshoParth
  • 1,492
  • 2
  • 20
  • 44
0

In Oracle the tablespace name is contained in the dba_tables view.

select owner, tablespace_name
from dba_tables
where table_name = 'MyTableName'

Alternatively you can use the user_tables view to see the table name and TS name of only tables the current schema contains.

select table_name, tablespace_name
from user_tables
where table_name = 'MyTableName'
mmmmmpie
  • 2,908
  • 1
  • 18
  • 26