Die primäre Dateigruppe ist SQL Server 2008


15

Ich habe eine große Tabelle (~ 50 Millionen Zeilen), die ich versuche, als Masseneintrag in SQL Server einzufügen, und erhalte die Fehlermeldung:

Speicherplatz für Objekt 'myDB' in Datenbank 'I 3 Stroke' konnte nicht zugeordnet werden, da die Dateigruppe 'PRIMARY' voll ist. Erstellen Sie Speicherplatz, indem Sie nicht benötigte Dateien löschen, Objekte in der Dateigruppe ablegen, der Dateigruppe zusätzliche Dateien hinzufügen oder das automatische Wachstum für vorhandene Dateien in der Dateigruppe aktivieren.

In der Datenbank befindet sich eine weitere Tabelle mit rund 25 Millionen Zeilen. Diese Datenbank wird nur auf einem einzelnen Computer verwendet. Sie dient zum Abrufen bereits vorhandener Daten und wird unter keinen Umständen die aktuelle Größe überschreiten.

Was ist in einer solchen Situation die beste Möglichkeit, dies zu beheben, damit sich SQL Server nicht beschwert? Ist es für die Lösung von Bedeutung, dass diese Datenbank nicht mehreren Benutzern zur Verfügung gestellt wird?


2
Sie müssen der Datenbank mehr Speicherplatz hinzufügen oder nicht verwendete Objekte entfernen. Was ist deine Frage?
Gordon Linoff

@GordonLinoff Als die Datenbank erstellt wurde, war die Dateigruppe auf uneingeschränktes Wachstum ausgelegt, und dennoch tritt dieses Problem auf. Ich hoffe, einen Weg zu finden, um dies zu verhindern.
Wootscootinboogie

1
Steht mehr physischer Speicherplatz zur Verfügung? Überprüfen Sie in diesem Fall die SQL Server-Fehlerprotokolle und prüfen Sie, ob zusätzliche Informationen dazu vorliegen, warum das automatische Wachstum fehlgeschlagen ist.
Kevin

Würden Sie bitte bestätigen, dass genügend Speicherplatz verfügbar ist? Dies ist die einzige plausible Ursache, mit Ausnahme des eingeschränkten Dateiwachstums (von dem Sie sagten, dass dies nicht der Fall ist).
Usr

1
Möglicherweise überschreiten Sie das DB-Größenlimit der SQL Express Edition.
Bruno Martinez

Antworten:


17

Folge diesen Schritten:

  1. Bestimmen Sie, wie viel Speicherplatz Sie der Datenbankspeicherzuordnung hinzufügen möchten:
    1. Öffnen Sie den Windows Explorer
    2. Klicken Sie mit der rechten Maustaste auf das Laufwerk, auf dem sich Ihre Datenbankdateien befinden
    3. Eigenschaften auswählen
    4. Prüfen Sie, wie viel Speicherplatz verfügbar ist und entscheiden , wie viel davon Sie für die Datenbank zuordnen wollen
      ( Vorschlag: Lassen Sie mindestens 20% Speicherplatz frei , wenn Sie die Datenbankdateien auf demselben Datenträger wie Ihr Betriebssystem beherbergen { Sub-Vorschlag : Don Erstellen Sie Ihre Daten neu oder migrieren Sie sie auf eine eigene Festplatte. Sie schrauben sich selbst an die E / A.} Lassen Sie mindestens 8% für eine reine Datenfestplatte übrig. Diese Zahlen sind Schätzungen der tatsächlichen prozentualen Vorschläge sind. )
  2. Aktualisieren Sie die Speicherzuordnung für die Datenbank.
    1. Öffnen Sie SSMS
    2. Klicken Sie auf die Registerkarte "Ansicht"
    3. Wählen Sie "Objekt Explorer"
    4. Erweitern Sie den Ordner "Databases"
    5. Klicken Sie mit der rechten Maustaste auf die Datenbank, in die Sie massenweise einfügen möchten
    6. Wählen Sie "Eigenschaften"
    7. Klicken Sie im Bereich "Seite auswählen" links im Eigenschaftenfenster auf die Listenoption "Dateien"
    8. Suchen Sie die Zeile "Datenbankdateien" mit der Dateigruppe "PRIMARY".
    9. Fügen Sie der Zahl "Initial Size (MB)" eine beliebige Anzahl von Megabyte hinzu, die Sie zur Datenbankzuordnung hinzufügen möchten
    10. Drücken Sie "OK"
      ( Sie können auch Ihre "Autogrowth" -Werte berücksichtigen, während Sie hier sind. )

Sie möchten Ihrer Datenbank so viel Speicherplatz zuweisen, wie Sie sich leisten können. Wenn der Speicherplatz knapp wird, wird dieser Fehler angezeigt, ohne dass die automatische Vergrößerung aktiviert ist. Wenn die automatische Vergrößerung aktiviert ist, wird die Leistung jedes Mal erhöht, wenn die automatische Vergrößerung erforderlich ist. Wenn Sie einfach keinen Speicherplatz mehr haben, ist dies Ihre Antwort und Sie benötigen eine größere Festplatte.


1
Wollen wir nicht alle größere DIsKs? : P
Santa

12

Express Edition 2014 hat ein Limit von 10 GB pro Datenbank. Wenn die automatische Vergrößerung einer Datenbank diesen Punkt erreicht, gibt SQL Server die (obskure?) Fehlermeldung aus, wobei das Lizenzlimit nicht erwähnt wird. Möglicherweise ist viel Speicherplatz vorhanden, diese Meldung wird jedoch weiterhin angezeigt.

Abhilfe, wenn das Design dies zulässt: Verwenden Sie mehrere Datenbanken unter dieser Lizenz.


1

In Datenbanken ist häufig nicht genügend Speicherplatz verfügbar, wenn sie sich im vollständigen Wiederherstellungsmodus befinden. Wenn Sie keine Transaktionen ausführen und manuelle Sicherungen ausreichen, können Sie den Wiederherstellungsmodus auf einfach ändern.

Möglicherweise müssen Sie auch Speicherplatz aus der Protokolldatei wiederherstellen. . . es kann geleert werden, aber trotzdem Platz verbrauchen.

Sie sollten diese Frage jedoch besser an Datenbankadministratoren richten, die möglicherweise mehr Lösungen anbieten.


Dies ist kein Problem des fehlgeschlagenen Protokollwachstums. Datenwachstum fehlgeschlagen.
Usr

@usr. . . Sie belegen wahrscheinlich denselben zugrunde liegenden Speicherplatz. Das Problem ist ein Mangel an Speicherplatz.
Gordon Linoff

Er sagt, dass Speicherplatz verfügbar ist. Ich habe ausdrücklich gefragt, weil ich auch misstrauisch war.
Usr

Wie viel Speicherplatz ist verfügbar / frei? Was ist die aktuelle Größe aller Dateien in der primären Dateigruppe und welche Wachstumseinstellung haben sie? Möglicherweise ist das Wachstumsinkrement größer als der verfügbare freie Speicherplatz.
user9164

1

Nach meiner Erfahrung tritt diese Meldung auf, wenn in der Primärdatei (.mdf) kein Platz zum Speichern der Metadaten der Datenbank vorhanden ist. Diese Datei enthält die Systemtabellen und speichert nur ihre Daten darin.

Machen Sie etwas Platz in der Datei und die Befehle funktionieren wieder. Das ist alles, viel Spaß

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.