Какова формула, чтобы определить, сколько места нужно создать для индекса?
ВАЖНО: мы используем sql server express 2005. Таким образом, 4 ГБ - это предел. Отсюда и этот вопрос.
Неограниченный Autogrow файлов журнала не вариант. Ниже приведен код t-sql psuedo.
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
)
Любые указатели оценены в этом отношении. Надеюсь, что это повторение, но я ничего не мог найти, когда я искал.
спасибо
ОБНОВЛЕНИЕ : Решение, которое сработало для меня, использует предложение Аарона. (дополнительные 1.2X сверх того места, которое сейчас занимает индекс). Поэтому в основном я удаляю самые старые данные до тех пор, пока доступное пространство не увеличится в 1,2-1,5 раза сверх текущего размера индекса, указанного в sp_spaceused tablename . Затем создайте индекс.