Wie kann ich die aktuelle Datenmenge im System ermitteln (MSSQL-Server)?

Wie kann ich die aktuelle Datenmenge im System ermitteln (MSSQL-Server)?

Sehr oft sind bei Fehlern oder Deadlocks eine bestimmte Größe/Menge an Daten ursächlich. Am besten man ermittelt den Stand per MSSQL Management-Studio. Ansonsten müsste man die Daten einzeln (oder per Funktion) abfragen. 

nachfolgend beschrieben:

 

Schritt-für-Schritt-Anleitung

per MSSQL-Management-Studio

Wenn ein MSSQL Management-Studio verfügbar ist:

  1. MSSQL Management-Studio starten und eine Datenbankverbindung mit unserem Datenbankbenutzer herstellen. 

  2. Dann die Datenbank markieren, für welche die Größe ermittelt werden soll. 

  3. Nun rechte Maustaste und "Berichte, Standardberichte, Datenträgerverwaltung durch Tabellen" wählen.

     

  4. Nun wird der Bericht angezeigt. Man kann die Spalten sortieren, z. Bsp. nach Datenmenge. Empfehlung: absteigend sortieren

  5. Der Bericht kann auch exportiert werden. Dazu einfach die rechte Maustaste auf dem Bericht klicken.
    Für weitere Analyse empfehlen wir EXCEL-Format.
    Hinweis zum PDF-Format: Falls jemand Export als PDF verwenden möchte, unbedingt vorher das Layout anpassen, sonst werden die Spalten auf mehrere Seiten verteilt und die Übersicht geht verloren. Bewährt hat sich A3 hoch oder quer. 

 

per ODBC-Verbindung

Wenn kein MSSQL Management-Studio verfügbar ist, dann per ODBC über eine Hilfstabelle agieren. Man könnte es auch per VBScript ausführen und dann eine Textdatei ausgeben. 

  1. mit einem geeigneten Tool eine ODBC-Verbindung herstellen mit unserem Datenbank-Benutzer. 

  2. Diese Funktion einfügen und alles markieren und ausführen. Die Namen müssen an allen Stellen identisch sein. Bitte anpassen:
    - Name der Hilfstabelle, im Beispiel: alleTabellen_20220610
    - Schema des Benutzers, im Beispiel: sysadm

    -- Hilfstabelle erstellen: create table alleTabellen_20220610 (tablename char(250), anzahl bigint); -- Daten einsammeln:  DECLARE @tabelle nvarchar(100)  DECLARE tabellen CURSOR  FOR select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA = 'SYSADM'  OPEN tabellen  FETCH NEXT FROM tabellen into @tabelle  WHILE @@FETCH_STATUS = 0    BEGIN      Exec('      insert into alleTabellen_20220610 select ''' + @tabelle + ''' as tablename, count(*) as anzahl from ' + @tabelle )      FETCH NEXT FROM tabellen      INTO @tabelle  END  CLOSE tabellen  DEALLOCATE tabellen  -- Ergebnis anzeigen:  select * from alleTabellen_20220610;

    Das angezeigte Ergebnis kopieren/speichern. 

 

 

DB-Admin-Rechte sind normalerweise nicht nötig. Sollten aber restriktive Rechte eingerichtet sein, dann bitte einen Datenbank-Admin-Account verwenden, der die Rechte hat, den Bericht zu erstellen. Auf keinen Fall unserem Datenbankbenutzer mehr Rechte geben!

 

Verwandte Artikel