Es konnte keine neue Seite für die Datenbank zugeordnet werden, da nicht genügend Speicherplatz vorhanden ist

13

Bei Verwendung des SQL Server-Import- und -Export-Assistenten wird der folgende Fehler angezeigt:

Fehler 0xc0202009: Datenflusstask 1: SSIS-Fehlercode DTS_E_OLEDBERROR.
Ein OLE DB-Fehler ist aufgetreten. Fehlercode: 0x80004005.
Es konnte keine neue Seite für die Datenbank 'database' zugeordnet werden, da nicht genügend Speicherplatz in der Dateigruppe 'PRIMARY' vorhanden ist. Erstellen Sie den erforderlichen Speicherplatz, indem Sie Objekte in der Dateigruppe ablegen, der Dateigruppe zusätzliche Dateien hinzufügen oder das automatische Wachstum für vorhandene Dateien in der Dateigruppe aktivieren.

Ich versuche, eine Reihe von 2-GB-Dateien hochzuladen. Während des Ladens der vierten Datei wird weiterhin die obige Fehlermeldung angezeigt, auch wenn ich zu Datenbankeigenschaften> Dateien gehe und das automatische Wachstum der Dateigruppe auf 2500 MB und die maximale Größe unbegrenzt ändere.

Was ist die beste Lösung? Diese Daten werden letztendlich zwischen 60 und 80 GB belegen.

Aaron Bertrand
quelle
1
Welche Version von SQL Server verwenden Sie? Wie viel freier Speicherplatz ist auf den Laufwerken verfügbar, auf denen die Datendateien für "Datenbank" gespeichert sind?
18.
2
In der Fehlermeldung werden die "besten Problemumgehungen" aufgeführt: Erstellen Sie den erforderlichen Speicherplatz, indem Sie Objekte in der Dateigruppe löschen, der Dateigruppe zusätzliche Dateien hinzufügen oder das automatische Wachstum für vorhandene Dateien in der Dateigruppe aktivieren. Ich bin nicht sicher, was wir Ihnen noch sagen können.
1
Brandon, SQL Server 2012. 760 GB freier Speicherplatz auf dem Laufwerk, auf dem die Datendateien für die Datenbank gespeichert sind. Ken, ich habe Autogrowth aktiviert, das Autogrowth wächst um 2500 MB und die maximale Größe ist unbegrenzt. Sollte ich immer noch auf dieses Problem stoßen? Ist es möglich, dass mehrere Autogrowths aktiviert werden müssen?
1
Haben Sie versucht, die Datenbank manuell zu vergrößern?
1
Kann es sein, dass Autogrow nur zwischen Elementen funktioniert und dass EIN Insert das Limit überschreitet? Wäre meine Wette - wenn ein 20000 GB Insert auf einem 2500 GB Autogrow ausfällt ... kann es sein, dass 900 MB frei sind und der Insert ausfällt.
TomTom

Antworten:

11

SQL Express-Datenbank wird bei 10g nach oben. Ich glaube, das ähnelt der Fehlermeldung, die Sie erhalten.

Ich bin einmal bei einem Kunden auf dieses Problem gestoßen und es hat eine Weile gedauert, bis ich es herausgefunden habe.

Welche Version von SQL verwenden Sie?

greg
quelle
1
Diese Lösung hat mich gerettet! Ich war in der Express-Version und habe auf den Dev upgegradet.
Israel Rodriguez
7

Bist du sicher , dass es das ist ?

Es konnte keine neue Seite für die Datenbank 'database' zugeordnet werden, da nicht genügend Speicherplatz in der Dateigruppe 'PRIMARY' vorhanden ist.

und nicht

Es konnte keine neue Seite für die Datenbank 'tempdb' zugeordnet werden, da nicht genügend Speicherplatz in der Dateigruppe 'PRIMARY' vorhanden ist.

?

Wenn es sich tatsächlich [tempdb]um eine Fehlermeldung handelt, muss diese separat verwaltet werden, indem sichergestellt wird, dass sie [tempdb]sich auf einer von einer anderen Datenbank getrennten Festplatte mit geeigneter Größe befindet.

Wenn es nicht [tempdb]in der Fehlermeldung ist, würde ich mir vorstellen, dass ein "Upload" dieser Art [tempdb]ziemlich hart treffen würde . Befindet sich [tempdb]auf derselben Festplatte / LUN wie 'database'? Wenn ja, verschärfen Sie wahrscheinlich Ihr Problem durch mehrere versuchte Dateizuwächse (auf mehreren Datenbanken). Stellen Sie also beim Hochladen sicher, dass Sie auch überwachen [tempdb].

Wenn Sie [tempdb]sich auf einem separaten Laufwerk befinden und sicher sind, dass Sie über genügend Speicherplatz verfügen, würde ich Ihre Datendatei auf die erwartete Endstatusgröße skalieren:

USE master;
GO
ALTER DATABASE [database]
MODIFY FILE
    (
    NAME = datafile,
    SIZE = 60GB,
    FILEGROWTH = 5GB
);
GO

Stellen Sie außerdem sicher, dass die Protokolldatei der Datenbank von der Datendatei getrennt ist. Wenn nicht, sind Sie mit konkurrierenden Wachstumsereignissen zurück. Wenn sie sich auf separaten Datenträgern befinden, würde ich sie auch durchgehen und die Größe entsprechend anpassen.

USE master;
GO
ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 8000MB
);
GO

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 16000MB
);
GO

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 24000MB
);
GO
...

bis Sie zu Ihrer gewünschten Logdatei-Größe kommen. Nennen wir es 80 GB, wo Sie Ihr Wachstum auf eine bestimmte Größe einstellen. Ich verwende die von Paul Randal und Kimberly Tripp empfohlenen Werte

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 80000MB,
    FILEGROWTH = 8000MB
);
Swasheck
quelle
6

Versuchen Sie es manuell anzubauen:

1. Stellen Sie im Objekt-Explorer eine Verbindung zu einer Instanz des SQL Server-Datenbankmoduls her, und erweitern Sie diese Instanz.

2. Erweitern Sie Datenbanken, klicken Sie mit der rechten Maustaste auf die zu vergrößernde Datenbank, und klicken Sie dann auf Eigenschaften.

3.Wählen Sie unter Datenbankeigenschaften die Seite Dateien.

4.Um die Größe einer vorhandenen Datei zu erhöhen, erhöhen Sie den Wert in der Spalte Anfangsgröße (MB) für die Datei. Sie müssen die Datenbank um mindestens 1 Megabyte vergrößern.

5.Um die Datenbank durch Hinzufügen einer neuen Datei zu vergrößern, klicken Sie auf Hinzufügen und geben Sie die Werte für die neue Datei ein. Weitere Informationen finden Sie unter Hinzufügen von Daten oder Protokolldateien zu einer Datenbank.

6.Klicken Sie auf OK.

Von: MSDN

Hart CO
quelle
4
Das manuelle Erweitern ist gut, da es Ihnen möglicherweise mehr Details verrät. In meinem Fall erhielt ich folgende Meldung: "CREATE DATABASE oder ALTER DATABASE ist fehlgeschlagen, da die resultierende kumulative Datenbankgröße Ihr lizenziertes Limit von 10240 MB pro Datenbank überschreiten würde." Was selbsterklärend ist.
user824276
1

Sie können auch die folgenden Skripts verwenden, um Speicherplatz aus der Datenbank freizugeben:

DELETE FROM STActionLog
where id in (SELECT TOP 100000 id
             FROM STActionLog
             ORDER BY actionDate ASC)

delete from STActionLog
where actionDate < '2019-08-01'

Diese helfen mir bei dem Fehler :) Stellen Sie außerdem sicher, dass genügend Speicherplatz auf dem Computer vorhanden ist.

Razvan
quelle