Da tempo ho avuto la necessità di analizzare un database su MSSQL composto da circa 1000 tabelle.
In particolare la mia prima necessità è stata quella di sapere quali di queste tabelle contenessero records.
Facendo una ricerca su internet ho trovato un articolo interessante ma purtroppo si è costretti a create una funzione su ogni db da analizzare.
Da quest'articolo ho preso alcuni spunti ed ho creato la seguente select che nel mio caso sembra funzionare bene.
In alcuni casi potrebbe essere necessario aggiornare le informazioni statistiche di sistema.
MSSQL mette a disposizione il comando·dbcc.
Ecco un'esempio per dbcc
use MIODB
go
dbcc updateusage(0)
go
Ed ecco la nostra Select
name, indexdb_rows
FROM sysobjects
LEFT JOIN
(SELECT id as indexdb_id, rows as indexdb_rows FROM sysindexes where indid < 2) as indexdb
on id=indexdb_id
WHERE
xtype='U'and indexdb_rows is not null and indexdb_rows > 0
ORDER BY
name
Nel seguente esempio ho utilizzato il db di "Team Viewer Manager" che contiene poche tabelle.
TABLE NAME |
ROWS |
ChangeLog |
1 |
Currency |
4 |
CustomField |
848 |
CustomFieldDesc |
8 |
Partner |
235 |
PartnerGroup |
9 |
RemoteDesktop |
237 |
TeamViewer |
230 |
TeamViewerConnection |
4916 |
TeamViewerMode |
4 |
TeamViewerQuality |
4 |
UserSetting |
39 |