Laden...

Anzahl Datensätze aller Tabellen einer MSSQL Datenbank anzeigen

Erstellt von solick vor 13 Jahren Letzter Beitrag vor 13 Jahren 21.780 Views
S
solick Themenstarter:in
56 Beiträge seit 2009
vor 13 Jahren
Anzahl Datensätze aller Tabellen einer MSSQL Datenbank anzeigen

verwendetes Datenbanksystem: <MSSQL Server 2008 Express>

Hallo,

ich wusste mal, wie ich das hinbekomme, hab mich aber schon länger nicht mehr mit komplexeren Abfragen beschäftigt. Ziel ist es, Alle Tabellen einer Datenbank mit der Anzahl der Datensätze anzuzeigen.

Mit SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

bekomme ich alle Tabellennamen.

Nun möchte ich für jede Tabelle einfach einen Count Befehl ausführen:

SELECT COUNT(*) FROM TABLE_NAME

Am Ende sollen dann zwei Spalten exisiteren in der Abfrage: Tabellen name und das Ergebnis von Count.

Da ich meine Unterlagen aus dem Studium damals nicht dabei habe und im Internet auch nicht richtig fündig geworden bin hoffe ich auf einen Tipp von Euch.

Beste Grüße

Solick

F
10.010 Beiträge seit 2004
vor 13 Jahren

Wo hängt es denn?
Du kannst die TabellenNamen auslesen und du weisst wie man ein Count erstellt.

Welchen Teil bekommst du nicht hin?

S
solick Themenstarter:in
56 Beiträge seit 2009
vor 13 Jahren

das verknüpfen in einer Abfrage.

Hab es schon probiert mit Ausdrücken wie:

SELECT * FROM (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES)

oder so ähnlich...

Mir fehlt gerade die Idee, wie ich die Tabellennamen auslesen kann und dann für jede Tabelle den Count erstellen kann...

F
10.010 Beiträge seit 2004
vor 13 Jahren

So geht das auch nicht.
Du kannst spalten selektieren, nicht Datenbanken.

Aber es gibt da eine undokumentierte SP beim SqlServer die kann Dir da helfen.
SP_MsForEachTable

Gier ein beispiel dazu
http://dbaspot.com/forums/sqlserver-server/356914-looping-tables.html

S
solick Themenstarter:in
56 Beiträge seit 2009
vor 13 Jahren

Danke für den Hinweis, aber unter 2008 funktioniert die SP wohl nicht... jedenfalls gibt er mir einen Syntax Fehler aus.

Bei Oracle gibt es im INFORMATION_SCHEMA doch deutlich mehr INfos, wenn ich mich recht erinnere, auch die Anzahl der Datensätze konnte man dort auslesen.

Gibt es denn in T_SQL keine einfache Möglichkeit, sich alle Tabellen einer DB und die Anzahl der Datensätze anzeigen zu lassen?

Mit einer Function oder Stored Procedure müsste es ja gehen, aber da müsst ich mich erst wieder reinfummeln, dachte das geht was einfacher 😦

F
10.010 Beiträge seit 2004
vor 13 Jahren

Doch, sie funktioniert unter 2008, wie hast DU sie denn benutzt.

exec sp_msforeachtable 'select ''?'', count (*) from ?'

geht bei mir einwandfrei.

Und vergleiche mit xyz bringen immer nix, Du willst etwas für MSSQL haben und dann musst Du damit auskommen.
Ist genauso wenn ich sagen würde IDENTITY gibt es nicht unter Oracle.
Das man das mit Sequenzen macht ist klar, aber eben komplett was anderes.

S
solick Themenstarter:in
56 Beiträge seit 2009
vor 13 Jahren

Super jetzt gehts. Keine Ahnung warum vorher nicht. Hatte es so geschrieben. DAnke!

Gibts es da irgendwo ne Syntax zu dem Befehl? Kann man die Spaltennamen benennen?

BEste Grüße

Solick

V
162 Beiträge seit 2010
vor 13 Jahren

Hi,

wenn man sich auf das Schema verläst, ist man verlassen.
Nur der

 Select Count(*) from Tabelle

gibt zuverlässig die Menge aus.
Beim MSSQL bin ich häufiger mit falschen Zahlen enttäuscht worden.
Mach es lieber selber zu Fuß.

Das Leben ist schön!

F
10.010 Beiträge seit 2004
vor 13 Jahren

sp_msforeachtable führt den angehängten dynamischen Sql aus, ersetzt nur das ? mit dem TableName.
Du kannst mit dem Sql alles machen was Du willst.

N
4.644 Beiträge seit 2004
vor 13 Jahren
2.082 Beiträge seit 2005
vor 13 Jahren

Hallo,

hatte das neulich für eine meiner DBs gebraucht.

Hier das Script (SQL2005):

SELECT DISTINCT Tab.Name 
FROM sysindexes Ind
INNER JOIN sys.tables Tab
ON Ind.id = OBJECT_ID(Tab.Name)
--AND Ind.rows > 0
ORDER BY Tab.Name

Edit: "AND Ind.rows > 0" sorgt dafür, nur Tabellen mit Zeilen anzuzeigen.

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de