Friday, August 31, 2007

Reindex for MS SQL Server 2005

สำหรับ MS SQL 2005 นั้น ก็จะคล้่ายๆ กับ 2000 ครับ
เพียงเปลี่ยนจาก sysobjects และ sysusers เป็น sys.tables และ sys.schemas
declare @name varchar(128), --ประกาศตัวแปรสำหรับเก็บชื่อ ตาราง
@user varchar(128),
--ประกาศตัวแปรสำหรับเก็บชื่อ เจ้าของตาราง
@statement varchar(1000)


declare tablename cursor for
--ประกาศตัวแปร cursor ข้อมูล
select t.name,
s.name
from sys.tables as t, sys.schemas as s
where t.schema_id = s.schema_id

open tablename
--เปิด cursor

fetch next from tablename --อ่านข้อมูลจาก cursor และให้ข้อมูลเข้าตัวแปร
into @name, @user

while @@fetch_status = 0 -- วนลูป cursor จนกว่าหมดข้อมูล

begin
set @statement = 'DBCC DBREINDEX (''[' + @user + '].[' + @name + ']'')' --สร้าง sql statement เพื่อ re-index ตาราง
print @statement + '...'
execute (@statement) -- สั่งให้ execute sql statement ที่ re-index ตาราง
fetch next from tablename
into @name, @user
end

close tablename -- ปิด cursor
deallocate tablename -- เคลียร์ memory

go

No comments: