Wie Erhält man die Liste aller Tabellen in SQL Server?

Um eine SQL Server-Datenbank und ihre Tabellen zu überprüfen, ist es fast zwingend erforderlich, eine Liste aller Tabellen in Form eines Arbeitsblatts oder einer Excel-Tabelle zu verwenden. Diese SQL-Abfrage ermöglicht es, alle Tabellen in einer SQL Server-Datenbank aufzulisten und die Anzahl der Zeilen und die Größe für jede Tabelle anzuzeigen. SQL Server-Entwickler suchen auch oft nach Tabellen, zum Beispiel für Impact-Analysen.

Daher ist es sehr nützlich, alle Tabellen schnell für eine Überprüfung aufzulisten, sei es technisch oder funktional. Zu Beginn ermöglichen diese drei verschiedenen T-SQL-Abfragen, die Informationen auf unterschiedliche Weise und mit unterschiedlichen Detailgraden anzuzeigen.

  1. Die erste ist eine einfache Liste der Tabellen.
  2. Die zweite Abfrage zeigt nützliche Informationen wie die Spalte object_id, create_date und modify_date an.
  3. Die dritte Abfrage zeigt das Schema, die Anzahl der Zeilen und den von jeder Tabelle genutzten Speicherplatz an.

Tatsächlich enthalten die SQL Server-Systemtabellen und Systemansichten nützliche Metadaten, die die verschiedenen Objekte in der Datenbank beschreiben, einschließlich der Tabellen natürlich. Somit nutzen alle in diesem Artikel vorgestellten Lösungen Systemtabellen oder -ansichten, wie:

  • information_schema.tables
  • sys.tables
  • sys.indexes
  • sys.partitions
  • sys.allocation_units
  • oder sys.schemas

1. Anzeigen einer Liste aller Tabellen mit einer SQL Server-Systemtabelle

In SQL Server ist information_schema.table eine Ansicht, keine Tabelle. Es handelt sich um eine der INFORMATION_SCHEMA-Ansichten, die von ISO für relationale Datenbankmanagementsysteme (RDBMS) standardisiert wurden. Diese Ansicht liefert Informationen über die in einer Datenbank vorhandenen Tabellen und Ansichten. Sie können sie konsultieren, um Metadaten zu diesen Tabellen und Ansichten zu erhalten, wie ihre Namen, Typen (Tabelle oder Ansicht) und andere Details. Zum Beispiel können Sie die Systemtabelle information_schema.table so verwenden:

SELECT *
FROM   information_schema.tables
WHERE  table_type='BASE TABLE';
Abfrage zum Abrufen der Liste aller Tabellen in SQL Server
Abfrage zum Abrufen der Liste aller Tabellen in SQL Server

2. Abfrage, um die Liste der SQL Server-Tabellen mit der sys.tables-Ansicht zu erhalten

Sie können auch die Systemtabelle sys.tables verwenden. Das Ergebnis der Abfrage zeigt, dass der Tabellentyp, der in der Spalte [type_desc] gespeichert ist, USER_TABLE ist. Sys.tables in Transact-SQL ist ebenfalls eine Systemansicht und keine Tabelle. Es ist Teil des SQL Server-Systemkatalogs und liefert Informationen über alle Benutzertabellen und Systemtabellen, die in der aktuellen Datenbank existieren. Es kann verwendet werden, um verschiedene Details und Metadaten über Tabellen abzurufen, wie ihren Namen, Erstellungsdatum, Änderungsdatum usw. Obwohl es wie eine Tabelle abgefragt werden kann, sollte es nicht als bearbeitbare Benutzertabelle behandelt werden. Stattdessen handelt es sich um eine strukturierte Ansicht, die bestimmte Systemmetadaten über die Tabellen präsentiert.

SELECT *
FROM   sys.tables;

3. Anzeigen der Liste der Tabellennamen und -größen in T-SQL

Die dritte Möglichkeit besteht darin, mehrere SQL Server-Systemtabellen wie sys.tables, sys.indexes, sys.partitions, sys.allocation_units und sys.schemas zu verwenden. Diese Tabellen sind nützlich, um die Liste der Tabellen anzuzeigen. Sie werden auch verwendet, um die Anzahl der Zeilen in jeder Tabelle und den genutzten Speicherplatz anzuzeigen. Zum Beispiel zeigt diese Abfrage alle Tabellen mit ihrer Anzahl an Zeilen in absteigender Reihenfolge sortiert an. Diese Abfrage ist nützlich, um die Größe der größten Tabellen in einer SQL Server-Datenbank zu finden.

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 tabSELECT
	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;

Diese Liste von Stichpunkten erklärt die obige Abfrage und wie sie aufgebaut ist.

  • Das Schlüsselwort „ORDER BY par.rows DESC;“ wird verwendet, um die Liste der SQL Server-Tabellen nach ihrer Anzahl an Zeilen in absteigender Reihenfolge zu sortieren.
  • Um nach Schema und dann nach Tabellenname zu sortieren, verwenden Sie „ORDER BY 1,2“ oder „ORDER BY sch.name, tab.name;“.
  • Die Größe der Tabellen ist in KiloBytes oder KB angegeben.

Über SQL Server-Objektauflistung und Systemtabellen

Dieses technische MS SQL Server-Tutorial erklärt, wie man eine Abfrage erstellt und verwendet, um alle Tabellen in einer gegebenen Datenbank aufzulisten. Wenn Sie noch neu bei SQL Server sind und eine Tabelle erstellen möchten, finden Sie hier wie man eine SQL Server-Tabelle erstellt und einige Datenzeilen einfügt. Es ist möglich, eine andere Liste von MS SQL-Tabellen mit mehr Fokus auf verfügbarem Speicherplatz anzuzeigen.

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

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*