HomeKB0545: Speicherplatz SQL Server

KB0545: Speicherplatz SQL Server

SPEICHERLIMITE SQL SERVER EXPRESS

Die kostenlosen Express Editionen der SQL Server haben Einschränkungen. Nachfolgend sehen Sie einen Überblick der einzelnen Versionen:

SQL VersionMax. DatenbankgrösseMax. CPUMax. Arbeitsspeicher
SQL Express Server 201710 GB1 Prozessor oder 4 Kerne1.38 GB
SQL Express Server 201610 GB1 Prozessor oder 4 Kerne1.38 GB
SQL Express Server 201410 GB1 Prozessor oder 4 Kerne1.00 GB
SQL Express Server 201210 GB1 Prozessor oder 4 Kerne1.00 GB

Die Einschränkungen bedeuten folgendes:

Max. Datenbankgrösse
Maximale relationale Grösse einer einzelnen Datenbank, bestehend aus Datenbank-Dateien: primäre Datendatei mit Endung .mdf, optionaler sekundärer Datendatei mit Endung .ndf und Transaktionsprotokolldatei mit Endung .ldf

Max. CPU
Maximal von einer einzelnen Instanz verwendete Serverkapazität (CPU)

Max. Arbeitsspeicher
Maximaler genutzter Arbeitesspeicher pro Instanz

GRÖSSE EINER DATENBANK ABFRAGEN

Um die Grösse einer Datenbank zu ermitteln können Sie folgendes Script ausführen:

SELECT
      [Datenbank Name] = DB_NAME(database_id),
      [Groesse in MB] = CAST(SUM(size) * 8 / 1024 AS DECIMAL(8,2))
FROM sys.master_files
WHERE database_id = DB_ID()
GROUP BY database_id

Sie sollten ein Resultat wie folgendes erhalten:

TABELLENGRÖSSEN EINER DATENBANK ABFRAGEN

Um zu wissen, wie viel Speicher jede Tabelle in der Datenbank verwendet, kann man folgendes Script ausführen:

SELECT
    t.NAME AS [Tabellenname],   
    p.rows AS [Anzahl Datensaetze],
    SUM(a.total_pages) * 8 AS [Total Speicher in KB],
    CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS [Total Speicher in MB],
    SUM(a.used_pages) * 8 AS [Gebrauchter Speicher in KB],
    CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS [Gebrauchter Speicher in MB],
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS [Freier Speicher in KB],
    CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS [Freier Speicher in MB]
FROM
    sys.tables t
INNER JOIN     
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
    sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN
    sys.schemas s ON t.schema_id = s.schema_id
WHERE
    t.NAME NOT LIKE 'dt%'
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID > 255
GROUP BY
    t.Name, s.Name, p.Rows
ORDER BY
    t.Name

Sie sollten ein Resultat wie folgendes erhalten:

Die verschiedenen Begriffe bedeuten folgendes:

Anzahl Datensätze
Anzahl verschiedener Einträge in der Tabelle

Total Speicher
Reservierter und effektiv benötigter Speicherplatz

Gebrauchter Speicher
Effektiv gebrauchter Speicherplatz

Freier Speicher
Total Speicher – gebrauchter Speicher