ディスク容量が不十分なため、データベースに新しいページを割り当てることができませんでした


13

SQL Serverのインポートおよびエクスポートウィザードを使用すると、次のエラーが表示されます。

エラー0xc0202009:データフロータスク1:SSISエラーコードDTS_E_OLEDBERROR。
OLE DBエラーが発生しました。エラーコード:0x80004005。
ファイルグループ「PRIMARY」のディスク領域が不十分なため、データベース「database」に新しいページを割り当てることができませんでした。ファイルグループにオブジェクトをドロップするか、ファイルグループにファイルを追加するか、ファイルグループ内の既存のファイルの自動拡張をオンに設定して、必要なスペースを作成します。

一連の2GBファイルをアップロードしようとしていますが、4番目のファイルの読み込み中に、(データベースプロパティ)>(ファイル)に移動し、ファイルグループの自動拡張を2500 MBに変更し、最大サイズを無制限にした後でも、上記のエラーメッセージが表示され続けます。

最善の回避策は何ですか?このデータは最終的に約60〜80 GBを占有します。


1
実行しているSQL Serverのバージョンは何ですか?「データベース」のデータファイルを保存するドライブで使用可能な空き容量はどれくらいですか?
ナブロンド

2
エラーメッセージは、「最適な回避策」を示しています。ファイルグループにオブジェクトをドロップするか、ファイルグループにファイルを追加するか、ファイルグループ内の既存のファイルの自動拡張を設定して、必要なスペースを作成します。これ以上何を伝えられるかわかりません。

1
Brandon、SQL SERVER2012。データベースのデータファイルを格納するドライブ上の760 GBの空き領域。ケン、私は自動成長を有効にしています。自動成長は2500 MB増加し、最大サイズは無制限です。まだこの問題に直面していますか?有効化が必要な自動成長が複数ある可能性はありますか?

1
DBを手動で拡張しようとしましたか?

1
自動拡張が要素間でのみ機能し、1つの挿入が制限を超えていることはありますか?私の賭けになります-2500gbの自動拡張で20000gbの挿入が失敗した場合.... 900mbの空きがあり、挿入が失敗する可能性があります。
トムトム

回答:


11

SQL Expressデータベースは10gで最高になります。これは、表示されるエラーメッセージに似ていると思います。

私はクライアントでこの問題に一度遭遇し、それを理解するのに時間がかかりました。

どのバージョンのSQLを実行していますか?


1
このソリューションは私を救った!Expressバージョンを使用していて、開発者にアップグレードしました。
イスラエルロドリゲス

7

よろしいですそれはです

ファイルグループ「PRIMARY」のディスク領域が不十分なため、データベース「database」に新しいページを割り当てることができませんでした。

ではなく

ファイルグループ「PRIMARY」のディスク領域が不十分なため、データベース「tempdb」に新しいページを割り当てることができませんでした。

それが実際[tempdb]にエラーメッセージにある場合、それはそれを確保することによって個別に管理する必要があるものです[tempdb]は、他のデータベースから分離された適切なサイズのディスク上にあるます。

[tempdb]エラーメッセージにない場合、この種の「アップロード」が[tempdb]かなり激しくヒットすると想像します。である[tempdb]と同じディスク/ LUNに'database'?もしそうなら、(複数のデータベース上で)複数回試行されたファイルの増加で問題を悪化させている可能性があります。したがって、この「アップロード」を行っている間は、監視していることを確認してください[tempdb]ている。

場合は[tempdb]別のドライブ上にある、あなたがしている特定のあなたは十分なスペースがあることを、私は先に行くと思いサイズあなたはそれの終わり状態のサイズであることを期待するものにデータファイル:

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

また、データベースのログファイルがデータファイルとは別であることを確認してください。そうでない場合は、競合する成長イベントに戻っています。それらが別々のディスク上にある場合は、適切にサイズを調整します。

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

希望のログファイルサイズに達するまで。80GBと呼びましょう。ここでは、成長を特定のサイズに設定します。Paul RandalKimberly Trippが推奨する値を使用しています

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

6

手動で成長させてみてください:

1.オブジェクトエクスプローラーで、SQL Serverデータベースエンジンのインスタンスに接続し、そのインスタンスを展開します。

2. [データベースを展開]をクリックして、データベースを右クリックし、[プロパティ]をクリックします。

3. [データベースのプロパティ]で、[ファイル]ページを選択します。

4.既存のファイルのサイズを増やすには、ファイルの[初期サイズ(MB)]列の値を増やします。データベースのサイズを少なくとも1メガバイト増やす必要があります。

5.新しいファイルを追加してデータベースのサイズを増やすには、[追加]をクリックして、新しいファイルの値を入力します。詳細については、「データまたはログファイルをデータベースに追加する」を参照してください。

6.「OK」をクリックします。

From:MSDN


4
手動エキスパンドは、詳細がわかる可能性があるため便利です。私の場合、「結果の累積データベースサイズがデータベースあたりのライセンス制限である10240 MBを超えるため、CREATE DATABASEまたはALTER DATABASEが失敗しました。」これは自明です。
user824276

1

次のスクリプトを使用して、データベースからスペースを解放することもできます。

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

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

これらはエラーの助けになります:)また、コンピューターに十分なディスク容量があることを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.