Изменить коэффициент заполнения первичных ключей во всех таблицах в MS SQL 2008 R2
Есть ли какой-либо рабочий метод для изменения аргументов Fill Factor первичных ключей всех таблиц в базе данных?
1 ответ
Решение
Этот скрипт находит все первичные ключи и для каждого строит инструкцию ALTER INDEX и выполняет ее.
---- change this to your desired value ----
DECLARE @NewFillFactor smallint = 92
-------------------------------------------
DECLARE @TableName varchar(300), @IndexName varchar(300), @sql varchar(max)
DECLARE inds CURSOR FAST_FORWARD FOR
SELECT TABLE_NAME, CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE='PRIMARY KEY'
OPEN inds
FETCH NEXT FROM inds INTO @TableName, @IndexName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'ALTER INDEX [' + @IndexName + '] ON [dbo].[' + @TableName + '] REBUILD WITH ( FILLFACTOR = ' + cast(@NewFillFactor as varchar(3)) + ')'
PRINT @sql
EXEC(@sql)
FETCH NEXT FROM inds INTO @TableName, @IndexName
END
CLOSE inds
DEALLOCATE inds
PRINT 'Done'