답변

7

이 스크립트는 모든 기본 키를 찾고 각각에 대해 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'