Auslesen von Werten aller Tabellen in einer Datenbank

MysterioJN

SQL-Guru
Beiträge
158
Hey zusammen,

ich benötige für einen "manuellen" Abgleich zwischen Datenbankübereinstimmungen (MySQL zu MSSQL) folgende Informationen:

- Auslesen aller Tabellennamen,
- Anzahl Datensätze je Tabelle,
- Größe des Speichers (Daten + Index) je Tabelle

In MySQL mach ich es so:
Code:
SELECT
TABLE_SCHEMA as `Database`,
TABLE_NAME AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) 'Size in MB',
round(((data_length + index_length) / 1024), 2) 'Size in KB',
SUM(TABLE_ROWS) AS Datensätze
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'aid'
GROUP BY TABLE_NAME
ORDER BY TABLE_NAME

Leider erkennt MSSQL nicht Worte wie "data_length".

Hoffentlich kann mir jemand helfen :/

Beste sonnige Grüße
Myst
 
Werbung:
- Also die `-Striche nutzt nur MySQL, in MSSQL musst du ' zum kenntlich machen von Text nutzen.
- Dein GROUP BY ist syntaktisch falsch, alle Spalten müssen aggregiert oder gruppiert werden. Bugs die MySQL sowas ausführen lassen gibt es in MSSQL nicht.
- Die Informationen zu Tabellen-Größen stehen nicht in INFORMATION_SCHEMA.TABLES. Hier mal eine gute Vorlage:
Die Größe aller Tabellen einer MSSQL-DB anzeigen | Bitfrickler
Ich denke du wirst den used space vergleichen müssen, denn die Tabellengröße kann ja variieren auch wenn der Inhalt gleich ist.

PS: Hier gibts auch einen Select für Indexgrößen. Ich weiß aber nicht ob die nicht abweichen können: Table and Index size in SQL Server
 
Danke für den Link!

Ich glaube die Speichergrößen zu Vergleichen wird eh zu Differenzen führen. Habe zum Beispiel ganz andere Größen rausbekommen als in der MySQL-DB.
Das könnte Systemseitig schon bedingt sein. Oder dann ist mal ein anderes Format oder ähnliches gewählt und schwupps Differenzen.
Die Datenzeilen je Tabelle hingegen müssen stimmig sein (was sie dank deinem Select) auch sind!

Wenn ich das Group by im MySQL-Select weglasse, summiert er auf eine Zeile (die der gesamten Datenbank). Sprich nicht auf Tabellen.
Danke vielmals! Das Thema ist somit erledigt.

Aber hinsichtlich "Syntaktisch", würde ich dich gern mal persönlich anschreiben (Korrekturlesen).

Nun aber erst Mal schöne Pfingsten!!
 
Werbung:
Joa kein Ding, MSSQL gibt aber auch gute Fehlermeldungen bei Syntaxfehlern zurück. Nicht nur RTFM wie bei MySQL.
 
Zurück
Oben