Auflisten der Zeilenanzahl jeder Tabelle in der Datenbank. Ein Äquivalent von
select count(*) from table1
select count(*) from table2
...
select count(*) from tableN
Ich werde eine Lösung veröffentlichen, aber andere Ansätze sind willkommen
sql-server
database
kristof
quelle
quelle
dtProperties
und so weiter. Da es sich um "System" -Tabellen handelt, möchte ich nicht darüber berichten.Ein Ausschnitt, den ich unter http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=21021 gefunden habe und der mir geholfen hat:
quelle
JOIN
Syntax verwenden würdefrom sysobjects t inner join sysindexes i on i.id = t.id and i.indid in (0,1) where t.xtype = 'U'
Um diese Informationen in SQL Management Studio abzurufen, klicken Sie mit der rechten Maustaste auf die Datenbank und wählen Sie Berichte -> Standardberichte -> Datenträgernutzung nach Tabelle.
quelle
quelle
Wie hier zu sehen ist, werden korrekte Zählungen zurückgegeben, wobei Methoden, die die Metadatentabellen verwenden, nur Schätzungen zurückgeben.
quelle
Ausgabe:
quelle
Zum Glück gibt Ihnen SQL Server Management Studio einen Hinweis dazu. Mach das,
Halten Sie den Trace an und sehen Sie sich an, was TSQL von Microsoft generiert.
In der wahrscheinlich letzten Abfrage sehen Sie eine Anweisung, die mit beginnt
exec sp_executesql N'SELECT
Wenn Sie den ausgeführten Code nach Visual Studio kopieren, werden Sie feststellen, dass dieser Code alle Daten generiert, die die Ingenieure von Microsoft zum Auffüllen des Eigenschaftsfensters verwendet haben.
Wenn Sie mäßige Änderungen an dieser Abfrage vornehmen, erhalten Sie Folgendes:
Jetzt ist die Abfrage nicht perfekt und Sie können sie aktualisieren, um andere Fragen zu beantworten. Der Punkt ist, dass Sie das Wissen von Microsoft nutzen können, um zu den meisten Fragen zu gelangen, die Sie haben, indem Sie die Daten ausführen, an denen Sie interessiert sind, und diese verfolgen die mit dem Profiler generierte TSQL.
Ich denke gerne, dass MS-Ingenieure wissen, wie SQL Server funktioniert, und dass TSQL generiert wird, das für alle Elemente funktioniert, mit denen Sie mit der von Ihnen verwendeten SSMS-Version arbeiten können. Daher ist es für eine Vielzahl von Versionen, die aktuell und aktuell sind, recht gut Zukunft.
Und denken Sie daran, kopieren Sie nicht nur, sondern versuchen Sie es auch zu verstehen, sonst könnten Sie die falsche Lösung finden.
Walter
quelle
Bei diesem Ansatz wird die Verkettung von Zeichenfolgen verwendet, um eine Anweisung mit allen Tabellen und deren Anzahl dynamisch zu erstellen, wie in den Beispielen in der ursprünglichen Frage:
Schließlich wird dies ausgeführt mit
EXEC
:quelle
Der schnellste Weg, um die Zeilenanzahl aller Tabellen in SQL Refreence zu ermitteln ( http://www.codeproject.com/Tips/811017/Fastest-way-to-find-row-count-of-all-tables-in-SQL )
quelle
Das erste, was mir in den Sinn kam, war die Verwendung von sp_msForEachTable
Die Tabellennamen werden jedoch nicht aufgelistet, sodass sie auf erweitert werden können
Das Problem hierbei ist, dass bei einer Datenbank mit mehr als 100 Tabellen die folgende Fehlermeldung angezeigt wird:
Also habe ich die Tabellenvariable verwendet, um die Ergebnisse zu speichern
quelle
Die akzeptierte Antwort hat in Azure SQL bei mir nicht funktioniert. Hier ist eine , die sehr schnell funktioniert und genau das getan hat, was ich wollte:
quelle
Dieses SQL-Skript gibt das Schema, den Tabellennamen und die Zeilenanzahl jeder Tabelle in einer ausgewählten Datenbank an:
Ref: https://blog.sqlauthority.com/2017/05/24/sql-server-find-row-count-every-table-database-efficiently/
Ein anderer Weg, dies zu tun:
quelle
Ich denke, der kürzeste, schnellste und einfachste Weg wäre:
quelle
Sie könnten dies versuchen:
quelle
quelle
Aus dieser Frage: /dba/114958/list-all-tables-from-all-user-databases/230411#230411
Ich habe der Antwort von @Aaron Bertrand, die alle Datenbanken und alle Tabellen auflistet, die Anzahl der Datensätze hinzugefügt.
quelle
Sie können diesen Code kopieren, einfügen und ausführen, um alle Tabellendatensätze in eine Tabelle aufzunehmen. Hinweis: Der Code wird mit Anweisungen kommentiert
Ich habe diesen Code getestet und er funktioniert unter SQL Server 2014 einwandfrei.
quelle
Ich möchte mitteilen, was für mich funktioniert
Die Datenbank wird in Azure gehostet und das Endergebnis lautet:
Gutschrift: https://www.mssqltips.com/sqlservertip/2537/sql-server-row-count-for-all-tables-in-a-database/
quelle
Wenn Sie MySQL> 4.x verwenden, können Sie Folgendes verwenden:
Beachten Sie, dass TABLE_ROWS für einige Speicher-Engines eine Annäherung ist.
quelle
Hier
indid=1
bedeutet ein CLUSTERED-Index undindid=0
ist ein HEAPquelle