2013-09-04 6 views

risposta

17

Prova questo:

SELECT 
    t.NAME AS TableName, 
    p.rows AS RowCounts 
FROM 
    sys.tables t 
INNER JOIN 
    sys.partitions p ON t.object_id = p.OBJECT_ID 
WHERE 
    t.NAME NOT LIKE 'dt%' 
    AND t.is_ms_shipped = 0 
    AND p.rows = 0 
GROUP BY 
    t.Name, p.Rows 
ORDER BY 
    t.Name 

La query va agli altri sys.tables e viste del catalogo per trovare i tavoli, i loro indici e partizioni, per trovare quelle tabelle che hanno un numero di righe di 0.

+0

Perché la query richiede t.NOME NON MI PIACE 'dt%'? –

3

Modifica per aggiungere i nomi dello schema:

SELECT 
    sch.name, 
    t.NAME AS TableName, 
    p.rows AS RowCounts 
FROM 
    sys.tables t 
INNER JOIN 
    sys.partitions p ON t.object_id = p.OBJECT_ID 
inner Join sys.schemas sch 
    on t.schema_id = sch.schema_id 
WHERE 
    t.NAME NOT LIKE 'dt%' 
    AND t.is_ms_shipped = 0 
    AND p.rows = 0 
GROUP BY 
    sch.name,t.Name, p.Rows 
ORDER BY 
    sch.name,t.Name