今日、SQL Server DBで複数のファイルグループに複数のファイルがあると、以下のエラーに遭遇しました。
イベントID:1105。'PRIMARY 'ファイルグループがいっぱいであるため、データベース内のオブジェクトに領域を割り当てることができませんでした。不要なファイルを削除するか、ファイルグループ内のオブジェクトを削除するか、ファイルグループにファイルを追加するか、ファイルグループ内の既存のファイルに対して自動拡張をオンに設定して、ディスク領域を作成します。
MSSQL 2014:ファイルグループがいっぱいのため、データベース内のオブジェクトにスペースを割り当てることができませんでした
インデックスメンテナンスジョブの実行中に発生しました。具体的には、インデックスの1つのインデックス再編成中に。調査の結果、すべてのファイルグループに自動拡張が有効になっているファイルが少なくとも1つあり、それぞれのドライブにある自動拡張が有効なすべてのファイルに十分な空き容量があることがわかりました。したがって、スペースの問題やファイルの自動拡張の問題はありませんでした(自動拡張が有効になっている各ファイルグループに少なくとも1つのファイルがあることを考慮してください)。さらにドリルダウンすると、MSリンクの1つから以下に見つかります https://msdn.Microsoft.com/en-us/library/aa337441.aspx
インデックスが複数のファイルにある場合、ファイルの1つがいっぱいになると、ALTER INDEX REORGANIZEはエラー1105を返すことがあります。プロセスが行を完全なファイルに移動しようとすると、再編成プロセスはブロックされます。この制限を回避するには、ALTER INDEX REORGANIZEの代わりにALTER INDEX REBUILDを実行するか、満杯のファイルのファイル拡張制限を増やします。
したがって、私の問題を修正するために、問題を修正したインデックスを再構築しました。しかし、将来的には別のインデックスで発生する可能性があるので、それを回避する方法を探しており、常に手動でインデックスを再構築することは、それを修正する良い方法ではありませんか?これについてのご意見をお待ちしております。
将来的にそれを回避する方法を探しています...
ファイルグループ内に、空き領域のあるファイルを1つだけ持たないでください。ファイルを同じサイズに設定し、それらを同時に同じサイズに拡張し、プロポーショナルフィルアルゴリズムを使用したラウンドロビンに任せます。
ただし、ファイルグループ内の自動拡張が制限されているファイルは、それらが存在するドライブのスペースの問題により制限されます。そのため、それらの自動拡張を有効にするか、初期サイズを増やしてすべてのファイルで同じに保つことは困難です。
次に、スペースがある別のドライブに移動するか、すべてのドライブにスペースができるように移動するか、ドライブを拡張します。
これは本当に管理に帰着します。これは、データファイルの空き容量とサイズが大幅に異なる一方で、常に発生する問題です。その理由は、プロポーショナルフィルとラウンドロビン割り当てにあります。
SQL Serverのプロポーショナルフィルの簡単な要約は、空き領域が最も多いファイルグループから、空き領域が少ないファイルよりも頻繁にファイルグループ内のファイルを割り当てる必要があることです。空き容量がほとんどないファイルが存在する場合、そのファイルはスキップされます。これは、実際にスペースがあるファイルグループにファイルが1つしかない場合、そこにすべての割り当てを効果的にホットスポットすることを意味します。ラウンドロビン部分は、ファイル間の割り当てだけです。
不均衡な空き容量のある単一のファイルのみを保持しているため、これはすべての割り当ての単一のホットスポットになります。これが私があなたのファイルを可能な限り同等にすることで上記に助言した理由です。