プライマリファイルグループは完全なSQL Server 2008です


15

大きなテーブル(〜5000万行)があり、SQL Serverに一括挿入しようとしていますが、次のエラーが表示されます。

「PRIMARY」ファイルグループがいっぱいであるため、データベース「I 3 Stroke」のオブジェクト「myDB」にスペースを割り当てることができませんでした。不要なファイルの削除、ファイルグループ内のオブジェクトの削除、ファイルグループへの追加ファイルの追加、またはファイルグループ内の既存ファイルの自動拡張の設定により、ディスク領域を作成します。

データベースには、約2500万行の別のテーブルがあります。このデータベースは1台のマシンでのみ使用され、既存のデータをマイニングするように設計されており、現在のサイズを超えて成長することはありません。

このような状況で、SQL Serverが文句を言わないようにこれに取り組む最善の方法は何ですか?このDBが複数のユーザーに公開されないというソリューションは重要ですか?


2
データベースにスペースを追加するか、未使用のオブジェクトを削除する必要があります。あなたの質問は何ですか?
ゴードンリノフ

@GordonLinoffデータベースが作成されたとき、ファイルグループは無制限に成長するように設計されていましたが、この問題に直面しています。これが再び起こらないようにする方法を見つけたいと思っています。
wootscootinboogie

1
より多くの物理ディスク容量がありますか?その場合は、SQL Serverエラーログを確認し、自動成長が失敗した理由に関する追加情報があるかどうかを確認します。
ケビン

十分なディスク容量があることを確認してください。これが唯一のもっともらしい原因です。ただし、ファイルの増加が制限されている場合を除きます(そうではありません)。
usr

1
たぶん、あなたはSQL Express版のDBサイズ制限に達している。
ブルーノマルチネス

回答:


17

次の手順を実行します:

  1. データベースストレージの割り当てに追加するスペースを特定します。
    1. Windowsエクスプローラーを開く
    2. データベースファイルが存在するディスクドライブを右クリックします。
    3. プロパティを選択
    4. 利用可能なディスク容量を確認し、データベースに割り当てる容量を決定します
      提案: OSと同じディスクにデータベースファイルを格納する場合は、少なくとも20%のディスク容量を空けておきます{ 提案:ドン「これをしないでください!データをそれ自身のディスクに再構築/移行します; I / Oを台無しにしています。}純粋なデータディスクに少なくとも8%を残してください。です。
  2. データベースのストレージ割り当てを更新します。
    1. オープンSSMS
    2. 「表示」タブをクリックします
    3. [オブジェクトエクスプローラー]を選択します
    4. 「データベース」フォルダーを展開します
    5. 一括挿入しようとしているデータベースを右クリックします
    6. 「プロパティ」を選択します
    7. プロパティウィンドウの左側にある[ページを選択]領域から[ファイル]リストオプションをクリックします。
    8. 「ファイルグループ」が「プライマリ」の「データベースファイル」行を見つけます
    9. 「初期サイズ(MB)」番号にデータベース割り当てに追加するメガバイト数を追加します
    10. ヒット「OK」
      また、あなたはここにいる間、あなたの「自動拡張」の値を検討する必要があります。

データベースにできる限りのストレージ割り当てを与えたいと考えています。スペースが不足すると、自動拡張をオンにせずにこのエラーが表示されます。自動拡張がオンの場合、自動拡張が必要になるたびにパフォーマンスが低下します。単にディスク領域が不足している場合は、それが答えであり、より大きなディスクが必要です。


1
私たちは皆、より大きなDIsKを望んでいませんか?:P
サンタ

12

Express Edition 2014では、データベースごとに10 GBの制限があります。データベースの自動拡張がヒットして、SQL Serverがライセンス制限に言及せずに(不明な?)エラーメッセージをスローした場合。十分なディスク容量があるかもしれませんが、それでもこのメッセージが表示されます。

設計で許容される場合の対処法:このライセンスで複数のデータベースを使用します。


1

多くの場合、データベースは完全復旧モードのときにスペースが不足します。トランザクションを実行しておらず、手動バックアップで十分な場合は、リカバリモードをシンプルに変更できます。

ログファイルから領域を回復する必要がある場合もあります。。。空にすることはできますが、スペースを使用します。

ただし、より多くのソリューションを提供する可能性のあるDBAにこの質問をする方が良いでしょう。


これは、失敗したログ成長の問題ではありません。データの拡大に失敗しました。
usr

@usr 。。それらはおそらく同じ基礎となるディスク領域を占有します。問題は、ディスク容量の不足です。
ゴードンリノフ

彼はディスクスペースが利用可能であると言います。私も疑っていたので、はっきりと尋ねました。
usr

空きディスク容量はどれくらいですか?プライマリファイルグループ内のすべてのファイルの現在のサイズはどのくらいですか?また、それらの拡張設定は何ですか?成長の増分が利用可能な空き領域よりも大きい可能性があります。
user9164

1

私の経験では、このメッセージは、プライマリファイル(.mdf)にデータベースのメタデータを保存するスペースがないときに発生します。このファイルにはシステムテーブルが含まれており、データを保存するだけです。

ファイルにスペースを作成すると、コマンドが再び機能します。それだけです、お楽しみください

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