Per eseguire un’auditoria di un database MSSQL e delle sue tabelle, è comune volere l’elenco delle tabelle in forma di tabella o foglio Excel. Questa query SQL consente di elencare tutte le tabelle in un database SQL Server e visualizzare il numero di righe e la dimensione per ciascuna tabella. Gli sviluppatori SQL Server spesso cercano tabelle, ad esempio per analisi di impatto. Pertanto, è molto utile elencare rapidamente tutte le tabelle per un’auditoria, sia essa tecnica o funzionale. Per iniziare, queste tre diverse query T-SQL consentono di visualizzare le informazioni in modi diversi, e con diversi livelli di dettaglio.
- La prima è una semplice lista di tabelle.
- La seconda query mostra informazioni utili come la colonna object_id, create_date e modify_date.
- La terza query visualizza lo schema, il numero di righe e lo spazio su disco utilizzato da ciascuna tabella.
Infatti, le tabelle di sistema SQL Server e le viste di sistema contengono metadati utili che descrivono i diversi oggetti nel database, comprese le tabelle, ovviamente. Così, tutte le soluzioni presentate in questo articolo utilizzano tabelle o viste di sistema, come:
- information_schema.tables
- sys.tables
- sys.indexes
- sys.partitions
- sys.allocation_units
- o sys.schemas
Table of Contents
1. Visualizzare un elenco di tutte le tabelle utilizzando una tabella di sistema SQL Server
In SQL Server, information_schema.table è una vista, non una tabella. È una delle viste INFORMATION_SCHEMA standardizzate dall’ISO per i sistemi di gestione di database relazionali (RDBMS). Questa vista fornisce informazioni sulle tabelle e le viste presenti in un database. Puoi consultarla per ottenere metadati su queste tabelle e viste, come i loro nomi, tipi (tabella o vista) e altri dettagli. Ad esempio, puoi utilizzare la vista di sistema information_schema.table, così:
SELECT * FROM information_schema.tables WHERE table_type='BASE TABLE';
2. Query per ottenere l’elenco delle tabelle SQL Server utilizzando la vista sys.tables
Puoi anche utilizzare la vista di sistema sys.tables. Il risultato della query mostra che il tipo di tabella memorizzato nella colonna [type_desc] è USER_TABLE. Sys.tables in Transact-SQL è anch’essa una vista di sistema e non una tabella. Fa parte del catalogo di sistema di SQL Server e fornisce informazioni su tutte le tabelle utente e di sistema esistenti nel database corrente. Può essere utilizzata per recuperare vari dettagli e metadati sulle tabelle, come il loro nome, data di creazione, data di modifica e così via. Sebbene possa essere interrogata come una tabella, non trattarla come una tabella utente modificabile. Invece, è una vista strutturata che presenta certi metadati di sistema sulle tabelle.
SELECT * FROM sys.tables;
3. Visualizzare l’elenco dei nomi e delle dimensioni delle tabelle in T-SQL
Il terzo metodo è utilizzare più tabelle di sistema SQL Server come sys.tables, sys.indexes, sys.partitions, sys.allocation_units e sys.schemas. Queste tabelle sono utili per visualizzare l’elenco delle tabelle. Sono anche utilizzate per visualizzare il numero di righe in ciascuna tabella e lo spazio su disco utilizzato. Ad esempio, questa query mostra tutte le tabelle con il loro numero di righe ordinato in ordine decrescente. Questa query è utile per trovare la dimensione delle tabelle più grandi in un database SQL Server.
SELECT sch.name AS SCHEMANAME, tab.name AS TABLENAME, par.rows AS ROWCOUNTS, SUM(alc.total_pages) * 8 AS TOTAL_SPACE, SUM(alc.used_pages) * 8 AS USED_SPACE, (SUM(alc.total_pages) - SUM(alc.used_pages)) * 8 AS UNUSED_SPACE FROM sys.tables tab INNER JOIN sys.indexes ind ON tab.object_id = ind.object_id INNER JOIN sys.partitions par ON ind.object_id = par.object_id AND ind.index_id = par.index_id INNER JOIN sys.allocation_units alc ON par.partition_id = alc.container_id LEFT OUTER JOIN sys.schemas sch ON tab.schema_id = sch.schema_id GROUP BY tab.name, sch.name, par.rows ORDER BY par.rows DESC;
Questo elenco di punti spiega la query sopra e come è costruita.
- La parola chiave “ORDER BY par.rows DESC;” è utilizzata per ordinare l’elenco delle tabelle SQL Server in base al numero di righe, in ordine decrescente.
- Per ordinare per schema e poi per nome della tabella, utilizzare “ORDER BY 1,2” o “ORDER BY sch.name, tab.name;”.
- La dimensione delle tabelle è indicata in KiloByte o KB.
Informazioni sugli oggetti di SQL Server e sulle tabelle di sistema
Questo tutorial tecnico MS SQL Server spiega come creare e utilizzare una query per elencare tutte le tabelle in un determinato database. Se sei ancora nuovo di SQL Server e vuoi creare una tabella, ecco come creare una tabella SQL Server e inserire alcune righe di dati. È possibile visualizzare un altro elenco di tabelle MS SQL con maggiore attenzione allo spazio su disco disponibile.
Commenta per primo