Come Ottenere un Elenco di Tutte le Tabelle in SQL Server?

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.

  1. La prima è una semplice lista di tabelle.
  2. La seconda query mostra informazioni utili come la colonna object_id, create_date e modify_date.
  3. 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

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';
Query to get the list of all tables in SQL Server
Query per ottenere l’elenco di tutte le tabelle in SQL Server

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.

https://expert-only.com/en/t-sql/sql-server-table-size-disk-space/

Commenta per primo

Lascia un commento

L'indirizzo email non sarà pubblicato.


*