Stampa
Categoria: SQL
Visite: 16704
Stella inattivaStella inattivaStella inattivaStella inattivaStella inattiva
 

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

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

REFERENCES

- SQL Tips
- Microsoft TechNet DBCC UPDATEUSAGE()

DISQUS - Leave your comments here