Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Auslesen von Werten aller Tabellen in einer Datenbank

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von MysterioJN, 13 Mai 2016.

  1. MysterioJN

    MysterioJN Datenbank-Guru

    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
     
  2. ukulele

    ukulele Datenbank-Guru

    - 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
     
  3. MysterioJN

    MysterioJN Datenbank-Guru

    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!!
     
  4. ukulele

    ukulele Datenbank-Guru

    Joa kein Ding, MSSQL gibt aber auch gute Fehlermeldungen bei Syntaxfehlern zurück. Nicht nur RTFM wie bei MySQL.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden