﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>SQLServerCentral / SQL Server 2008 / SQL Server 2008 - General  / Rebuild/Reorganize Indexes / Latest Posts</title><generator>InstantForum.NET v2.9.0</generator><description>SQLServerCentral</description><link>http://www.sqlservercentral.com/Forums/</link><webMaster>notifications@sqlservercentral.com</webMaster><lastBuildDate>Thu, 23 May 2013 19:53:37 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Rebuild/Reorganize Indexes</title><link>http://www.sqlservercentral.com/Forums/Topic919002-391-1.aspx</link><description>Thanks for updating us with your fix.</description><pubDate>Mon, 10 May 2010 13:50:50 GMT</pubDate><dc:creator>SQLRNNR</dc:creator></item><item><title>RE: Rebuild/Reorganize Indexes</title><link>http://www.sqlservercentral.com/Forums/Topic919002-391-1.aspx</link><description>Nevermind, I added the database name in front of the schema name to solve the problem.</description><pubDate>Mon, 10 May 2010 13:27:19 GMT</pubDate><dc:creator>Ed-586976</dc:creator></item><item><title>Rebuild/Reorganize Indexes</title><link>http://www.sqlservercentral.com/Forums/Topic919002-391-1.aspx</link><description>The following rebuild index scripts which was fine for a long time now has suddenly stopped rebuilding indexes when running from master database. But if the script is running on the same database where we are rebuilding the indexes it works perfect. Can someone please let me know what is wrong with the script that is preventing it to run from the master database and rebuild the indexes??Here is the script.USE [master]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE procedure [dbo].[usp_alter_index](@dbname varchar(100), @reorg_percent float=10.0, @rebuild_percent float=30.0)asbegin	SET NOCOUNT ON;	DECLARE @objectid int;	DECLARE @indexid int;	DECLARE @partitioncount bigint;	DECLARE @schemaname nvarchar(130); 	DECLARE @objectname nvarchar(130); 	DECLARE @indexname nvarchar(130); 	DECLARE @partitionnum bigint;	DECLARE @partitions bigint;	DECLARE @frag float;	DECLARE @command nvarchar(4000); 	-- Conditionally select tables and indexes from the sys.dm_db_index_physical_stats function 	-- and convert object and index IDs to names.	SELECT		object_id AS objectid,		index_id AS indexid,		partition_number AS partitionnum,		avg_fragmentation_in_percent AS frag	INTO #work_to_do	FROM sys.dm_db_index_physical_stats (DB_ID(@dbname), NULL, NULL , NULL, 'LIMITED')	WHERE	avg_fragmentation_in_percent &amp;gt; 10.0  -- Select fragmentation greater than 10			AND index_id &amp;gt; 0 -- Ignore heaps			AND page_count &amp;gt; 25; -- Ignore small tables		-- Declare the cursor for the list of partitions to be processed.	DECLARE partitions CURSOR FOR SELECT * FROM #work_to_do;	-- Open the cursor.	OPEN partitions;	-- Loop through the partitions.	WHILE (1=1)		BEGIN;			FETCH NEXT			   FROM partitions			   INTO @objectid, @indexid, @partitionnum, @frag;			IF @@FETCH_STATUS &amp;lt; 0 BREAK;			SELECT @objectname = QUOTENAME(o.name), @schemaname = QUOTENAME(s.name)			FROM sys.objects AS o			JOIN sys.schemas as s ON s.schema_id = o.schema_id			WHERE o.object_id = @objectid;			SELECT @indexname = QUOTENAME(name)			FROM sys.indexes			WHERE  object_id = @objectid AND index_id = @indexid;			SELECT @partitioncount = count (*)			FROM sys.partitions			WHERE object_id = @objectid AND index_id = @indexid;/* Fragmentation greater than 30% should be rebuilt and fragmentation less than 30% should be reorganized.*/			IF @frag &amp;lt; @rebuild_percent				SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REORGANIZE';			IF @frag &amp;gt;= @rebuild_percent 				SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD WITH (ONLINE=ON)';			IF @partitioncount &amp;gt; 1				SET @command = @command + N' PARTITION=' + CAST(@partitionnum AS nvarchar(10));			EXEC (@command);			PRINT N'Executed: ' + @command;		END;	-- Close and deallocate the cursor.	CLOSE partitions;	DEALLOCATE partitions;	select * from #work_to_do	-- Drop the temporary table.	DROP TABLE #work_to_do;endGOThanks in advance.</description><pubDate>Mon, 10 May 2010 07:43:44 GMT</pubDate><dc:creator>Ed-586976</dc:creator></item></channel></rss>