SQL2005 인덱스 재생성 저장 프로세스 sprebuild_index 오리지널
이전에는 수동으로 인덱스를 우클릭해서 다시 생성했지만 인덱스가 너무 많아서 조작하기가 힘들고 인덱스는 인터넷에서 저장 과정을 찾았습니다. 스스로 정리했습니다. 실행할 때 해당하는 데이터베이스를 선택하고 execsp 를 실행하면 됩니다.rebuild_index는 다음과 같습니다.
USE [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE proc [dbo].[sp_rebuild_index]
(
@Rebuild_Fragmentation_Percent smallint = 5 -- > 5%
)
as
begin
/* :
1. : exec sys.sp_MSforeachdb 'use ?;exec sp_rebuild_index'
2. : exec sp_rebuild_index
*/
--
if (db_name() in ('master','model','msdb','tempdb')) return;
-- ( ) <= 5% ,
if not exists(select 1 from sys.dm_db_index_physical_stats(db_id(),null,null,null,null) a where a.index_id>0 and a.avg_fragmentation_in_percent > @Rebuild_Fragmentation_Percent) return
print replicate('-',60)+char(13)+char(10)+replicate(' ',14)+N' '+quotename(db_name())+N' '+replicate(' ',20)+char(13)+char(10)
declare @sql nvarchar(2000),@str nvarchar(2000)
declare cur_x cursor for
select 'alter index '+quotename(a.name)+' on '+quotename(object_schema_name(a.object_id))+'.'+quotename(object_name(a.object_id))+' rebuild;' as [sql]
,N' :' +quotename(object_schema_name(a.object_id))+'.'+quotename(object_name(a.object_id))+'.'+quotename(a.name) as [str]
from sys.indexes a
inner join sys.dm_db_index_physical_stats(db_id(),null,null,null,null) b on b.object_id=a.object_id
and b.index_id=a.index_id
where a.index_id>0
and b.avg_fragmentation_in_percent > @Rebuild_Fragmentation_Percent
order by object_name(a.object_id),a.index_id
open cur_x
fetch next from cur_x into @sql,@str
while (@@fetch_status = 0)
begin
print @sql
exec(@sql)
print @str
fetch next from cur_x into @sql,@str
end
close cur_x
deallocate cur_x
end
이 가능하다, ~할 수 있다,...
메시지 195, 레벨 15, 상태 10, 프로세스 sprebuild_index, 24행'objectschema_name '은 식별할 수 있는 내장 함수 이름이 아닙니다.
걱정하지 마십시오. SQL Server SP4 패치가 설치되어 있지 않으므로 패치를 설치하면 됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.