特定のテーブルのインデックスを再作成するとき
DBCC DBREINDEX(@TableName, '',90)
エラーが出る
レベル17、状態2、手順aareindex、行21 [バッチ開始行0]「PRIMARY」ファイルグループがいっぱいのため、データベース「mydatabase」のオブジェクト「dbo.SORT一時実行ストレージ:422738479742976」にスペースを割り当てることができませんでした不要なファイルを削除するか、ファイルグループ内のオブジェクトを削除するか、ファイルグループにファイルを追加するか、ファイルグループ内の既存のファイルに対して自動拡張をオンに設定して、ディスク領域を作成します。
TempDbのサイズを増やしてみます
データベースのプロパティを見るとSSMSを使用してサイズを確認できますが、設定方法がわかりません。
[更新]
select type_desc, name, size, max_size, growth from tempdb.sys.database_files
戻り値
ファイルサイズはすでに10236 Mbで、Expressの制限は10ギガですが、ディスク使用量レポートは、ディスク領域の26%が未割り当てで、40%がデータ、32%がインデックスであることを示しています。
ファイルサイズはすでに10236 Mbで、Expressの制限は10ギガです。
ユーザーデータベースdata file size
が制限(Express Editionでは10Gb)に達したが、ディスク領域の26%が割り当てられていない場合、rebuild
のsort
を使用してインデックスをtempdb
にしようとすることができます。
DBCC DBREINDEX
はdeprecated
であり、SQL Server 2017
で使用する理由はありません。alter index..rebuild
を使用すると、sort
をtempdb
で実行することを示すことができます。
alter index your_index on your_table rebuild
with (sort_in_tempdb = on, fillfactor = 90);
インデックスをrebuild
するときは、最初にspace
を使用してindex
のコピーを作成する必要があります(このスペースはdb
に割り当てられます)。それを作成するには、sort
を実行するためのスペースも必要です。このスペースはtempd
に割り当てることができます。あなたの場合、エラーにはデータベースにspace
を実行するsort
がなかったことが明確に示されているため、sort
がtempdb
で実行される場合は問題を解決できるでしょう。
詳細については、こちらをご覧ください。 インデックスのSORT_IN_TEMPDBオプション
Temp dbのサイズを増やす必要はありません。
「PRIMARY」ファイルグループがいっぱいであるため、データベース「mydatabase」内.
プライマリファイルグループに書き込めないことが通知されています(c:\ path to database\mydatabase.mdf)。 MDFが格納されているディスク領域がないか、またはより可能性の高い原因は、プライマリファイルグループに書き込むための空き容量がないことです。
これにはいくつかの方法で対処できます
GUI内
SSMSの場合:
SQL変更ステートメント
use master
go
-- Use one of the statements below
-- this statement will allow for unlimited file growth
alter database [mydatabase] modify file ( name ='mydatabase', maxsize = UNLIMITED)
-- this statement will allow the database size to 100MB's.
alter database [mydatabase] modify file ( name ='mydatabase', maxsize = 102400KB)