Cikk azonosítója: 943345 - Utolsó ellenőrzés: 2008. január 10. - Verziószám: 1.3

A Windows SharePoint Services 3.0 és a SharePoint Server 2007 adatbázisainak töredezettségmentesítése

RendszertippA jelen cikk az Ön által használttól eltérő operációs rendszerre vonatkozik. A cikk azon tartalmait, amelyek nem relevánsak Önnek, letiltjuk.
Az összes kibontása | Az összes összecsukása

BEVEZETÉS

A cikk ismerteti, hogyan töredezettségmentesítheti a Microsoft Windows SharePoint Services 3.0 és a Microsoft Office SharePoint Server 2007 alábbi adatbázisait:
  • Keresési adatbázis
  • Profiladatbázis
  • Tartalom-adatbázis

További információ

A Microsoft SQL Server indexe töredezettségének kiterjedése határozza meg, hogy az adatbázis töredezettségmentesítése online vagy offline eljárással végezhető-e el. Online töredezettségmentesítés esetén a program csak az SQL Server levéllapjait töredezettségmentesíti, a zárolt lapokat nem. Ha a töredezettségmentesítést offline módban végzi, a program a zárolt lapokat és a levéllapokat egyaránt töredezettségmentesíti.

Az SQL Server alábbi parancsfájlja megállapítja a töredezettség mértékét, és végrehajtja az offline vagy online töredezettségmentesítést (ha szükséges).

Az alábbi parancsfájlban a töredezettség mértékét a logikailag lineáris, de fizikailag nem lineáris blokkok száma határozza meg. Ha a töredezettség mértéke kisebb 10 százaléknál, a töredezettségmentesítés nem kezdődik el. Ha a töredezettség mértéke 10 és 90 százalék közötti, az online töredezettségmentesítés indul el. Ha a töredezettség mértéke nagyobb 90 százaléknál, offline töredezettségmentesítés kezdődik meg.

Fontos! Az SQL Server kiszolgálón tárolt alábbi eljárás módosítja a Windows SharePoint Services 3.0 és a SharePoint Server 2007 adatbázisait. A parancsfájlt pontosan a cikkben ismertetett módon kell futtatni. A SharePoint Server 2007 adatbázisain végzett módosításoknak meg kell felelniük a Microsoft Tudásbázis alábbi cikkében szereplő támogatási utasításoknak:
841057  (http://support.microsoft.com/kb/841057/ ) Az Office kiszolgálói termékei és a Windows SharePoint Services által használt adatbázisok módosításainak támogatása (Előfordulhat, hogy a hivatkozás részben vagy teljes egészében angol nyelvű tartalomra mutat.)
Megjegyzés: A SharePoint Server 2007 adatbázisait javasolt SQL Server 2005 rendszert futtató számítógépen tárolni. Javasolt továbbá a parancsfájl futtatása előtt és után egyaránt ellenőrizni a töredezettség mértékét. A parancsfájlt az adott helyzetnek megfelelően napi, heti vagy havi futásra ütemezheti.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'proc_DefragIndexes')
	BEGIN
		DROP  Procedure  dbo.proc_DefragIndexes
	END

GO

-- =============================================
-- Ez a tárolt eljárás ellenőrzi az összes indexet az aktuális adatbázisban,
-- és offline vagy online töredezettségmentesítést hajt végre
-- a megadott küszöbértékeknek megfelelően.
-- A tárolt eljárás továbbá frissíti azon indexek statisztikáit, amelyek utolsó frissítése
-- régebbi a megadott küszöbértéknél.
-- Paraméterek:
--	Az @onlineDefragThreshold a töredezettség minimális százalékos értéke
--	online töredezettségmentesítés végrehajtásához (alapérték: 10%)
--	Az @offlineDefragThreshold a töredezettség minimális százalékos értéke 
--	offline töredezettségmentesítés végrehajtásához (alapérték: 90%)
--	Az @updateStatsThreshold a statisztika utolsó frissítése óta eltelt napok száma,
--	amelynek hatására a program indítja a statisztika frissítését (alapérték: 7 nap)
-- =============================================
CREATE PROCEDURE dbo.proc_DefragIndexes 
(
	@onlineDefragThreshold float = 10.0,
	@offlineDefragThreshold float = 90.0,
	@updateStatsThreshold int = 7
)
	
AS
BEGIN
	set nocount on
	DECLARE @objectid int
	DECLARE @indexid int
	DECLARE @frag float
	DECLARE @command varchar(8000)
	DECLARE @schemaname sysname
	DECLARE @objectname sysname
	DECLARE @indexname sysname

	declare @AllIndexes table (objectid int, indexid int, fragmentation float)

	declare @currentDdbId int
	select @currentDdbId = DB_ID()
	
	insert into @AllIndexes
	SELECT 
		object_id, index_id, avg_fragmentation_in_percent 
	FROM sys.dm_db_index_physical_stats (@currentDdbId, NULL, NULL , NULL, 'LIMITED')
	WHERE index_id > 0

	DECLARE indexesToDefrag CURSOR FOR SELECT * FROM @AllIndexes

	OPEN indexesToDefrag;

	-- Loop through the partitions.
	FETCH NEXT
	   FROM indexesToDefrag
	   INTO @objectid, @indexid, @frag;

	WHILE @@FETCH_STATUS = 0
		BEGIN

		SELECT @schemaname = 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 = name 
		FROM sys.indexes
		WHERE  object_id = @objectid AND index_id = @indexid

		IF @frag > @onlineDefragThreshold
		BEGIN
			IF @frag < @offlineDefragThreshold
				BEGIN;
					SELECT @command = 'ALTER INDEX ' + @indexname + ' ON ' + @schemaname + '.' + object_name(@objectid) + ' REORGANIZE'
					EXEC (@command)
				END;

			IF @frag >= @offlineDefragThreshold
				BEGIN;
					SELECT @command = 'ALTER INDEX ' + @indexname + ' ON ' + @schemaname + '.' + object_name(@objectid) + ' REBUILD'
					EXEC (@command)
				END;
			PRINT 'Executed ' + @command
		END

		IF STATS_DATE(@objectid, @indexid) < DATEADD(dd, -@updateStatsThreshold, getdate())
		BEGIN
			SELECT @command = 'UPDATE STATISTICS ' + @schemaname + '.' + object_name(@objectid) + ' ' + @indexname +' WITH RESAMPLE'
			EXEC (@command)

			PRINT 'Executed ' + @command
		END

		FETCH NEXT FROM indexesToDefrag INTO @objectid, @indexid, @frag

	END

	CLOSE indexesToDefrag;
	DEALLOCATE indexesToDefrag;
END
GO

A Microsoft Tudásbázis kapcsolódó cikke:
932744  (http://support.microsoft.com/kb/932744/ ) Információ a karbantartási tervet készítő varázsló SQL Server 2005 rendszerben való használatáról, valamint a SharePoint adatbázisain a rendszergazdák által végrehajtható feladatokról (Előfordulhat, hogy a hivatkozás részben vagy teljes egészében angol nyelvű tartalomra mutat.)

A cikkben található információ a következő(k)re vonatkozik:
  • Microsoft Windows SharePoint Services 3.0
  • Microsoft Office SharePoint Server 2007
Kulcsszavak: 
kbhowto kbinfo kbexpertiseinter KB943345
A Microsoft tudásbázisban szolgáltatott információkat "az adott állapotban", bárminemű szavatosság vagy garancia nélkül biztosítjuk. A Microsoft kizár mindennemű, akár kifejezett, akár vélelmezett szavatosságot vagy garanciát, ideértve a forgalomképességre és az adott célra való alkalmasságra vonatkozó szavatosságot is. A Microsoft Corporation és annak beszállítói semmilyen körülmények között nem felelősek semminemű kárért, így a közvetlen, a közvetett, az üzleti haszon elmaradásából származó vagy speciális károkért, illetve a kár következményeként felmerülő költségek megtérítéséért, még abban az esetben sem, ha a Microsoft Corporationt vagy beszállítóit az ilyen károk bekövetkeztének lehetőségére figyelmeztették. Egyes államok joga nem teszi lehetővé bizonyos károkért a felelősség kizárását vagy korlátozását, ezért a fenti korlátozások az ön esetében esetleg nem alkalmazhatók.