インデックスの作成に必要な空き領域を計算する式は何ですか?SQL Server 2005インデックスの作成に必要な空き領域
重要:私たちはSQL Server Express 2005を使用しています。したがって、4GBが限界です。したがって、この質問。 ログファイルの無制限自動拡張はオプションではありません。以下のt-sql擬似コードでさらに説明します。
int spaceNeeded =
FN_COMPUTE_SPACE_NEEDED_TO_CREATE_UNCLUSTERED_INDEX(MyTableName, MyColumnName)
それは、このストアドプロシージャ をコーディングしながら、私がで立ち往生していますその上で一つの機能だ私は、MSDNで利用可能な情報をすべて以下扱うことができると思いなど
While(GetDBSpaceAvailable() < spaceNeeded)
{
purge some data (go thru all tables and delete data logically)
}
create the index we need
CREATE NONCLUSTERED INDEX [IX_NonClustered_MyTable] ON [dbo].[MyTable]
( [MyColumn] ASC
)
この中で感謝任意のポインタ敬具。これを繰り返すことを望んでいましたが、私が検索したとき何も見つかりませんでした。 はあなた
UPDATEに感謝:私のために働いたソリューションは、アーロンの提案を使用しています。 (索引が現在占めるスペースの1.2倍以上)。だから、基本的には、使用可能な空き容量が、現在のインデックスサイズの1.2から1.5倍以上になるまで、最も古いデータをパージします。sp_spaceused tablenameによって報告されています。次に、索引を作成します。
「ログファイルの無制限自動拡張はオプションではありません」と言います。私は大きなExpressユーザーではありませんが、ログファイルのサイズが計算の一部であることは確かですか? (私はテストを実行していないが、私はそれが本当ではないと確信しています。)これはあなたの問題に関係していると確信していますか?この操作を実行すると、大量のログの使用、データファイルの展開、またはその両方が見られますか? –
AaronとJNKに感謝します。私はフルまたはほぼ完全なエクスプレスDBにインデックスを作成しようとすると、私が得るエラーメッセージをチェックします。すぐにここにエラーを返信します。コストを抑えるため、Expressではdbをプロダクションで使用しています。ロジックは、古いデータが最大になるとパージします。私たちは、いくつかのレポーティングアプリのインデックスを使ってエクスプレスDBをアップグレードする必要があり、バックグラウンドである状況があります。 – Gullu
ここでは、Microsoftのユーザーフレンドリーなエラーメッセージです:インデックスのメッセージ1105、レベル17、状態2、行1を作成しようとすると オブジェクト 'dbo.SORT一時的に実行するストレージの空き領域を割り当てることができませんでした:422212493901824'データベース 'MyDB' 'PRIMARY'ファイルグループがいっぱいであるためです。 不要なファイルを削除したり、ファイルグループ内のオブジェクトを削除したり、ファイルグループにファイルを追加したり、ファイルグループ内の既存のファイルに対して自動拡張を設定してディスク領域を作成します。 – Gullu