文章編號: 943345 - 上次校閱: 2011年7月25日 - 版次: 2.0

如何 Windows SharePoint Services 3.0 資料庫和 SharePoint Server 2007 資料庫進行磁碟重組

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
全部展開 | 全部摺疊

簡介

本文說明如何重組下列 Windows SharePoint Services 3.0 資料庫和 Microsoft Office SharePoint Server 2007 資料庫:
  • 搜尋資料庫
  • 設定檔資料庫
  • 內容資料庫

其他相關資訊

下列的 Microsoft SQL Server 指令碼執行時,它會測量分散程度。分散程度的定義是以邏輯方式線性,但實際非線性的區塊數目。

SQL 索引分散程度,取決於線上或離線磁碟重組發生。線上重組被定義為磁碟重組,不會不會執行 SQL 鎖定和所會重組只有分葉節點。離線磁碟重組會 SQL 鎖定,並會重組所有節點。

如果分散程度百分比少於 10%,就會發生沒有磁碟重組。如果分散程度是從 10 到 90%,線上重組就會發生。如果超過 90%的分散程度百分比,就會發生離線磁碟重組。

下列指令碼嘗試以第一次執行線上磁碟重組,而如果是必要的離線磁碟重組,然後切換到離線磁碟重組。

重要下列的 SQL Server 預存程序變更到 Windows SharePoint Services 3.0 資料庫與 SharePoint Server 2007 資料庫。這段指令碼必須確實以指定在執行這份文件。您對 SharePoint Server 2007 資料庫進行的變更必須遵循下列 「 Microsoft 知識庫 」 文件中所指定的支援指導方針:
841057? (http://support.microsoft.com/kb/841057/ ) Office 伺服器產品和 Windows SharePoint Services 所使用的資料庫變更的支援
附註我們建議您主控 SharePoint Server 2007 資料庫正在執行 SQL Server 2005 的電腦上。我們建議您監視的片段層級之前, 和之後執行此指令碼。我們建議您排程要執行每日、 每週或每月、 為適合您狀況的指令碼。
CREATE PROCEDURE [dbo].[proc_DefragmentIndices]
AS
    SET NOCOUNT ON
    DECLARE @objectid int
    DECLARE @indexid int
    DECLARE @command varchar(8000)
    DECLARE @baseCommand varchar(8000)
    DECLARE @schemaname sysname
    DECLARE @objectname sysname
    DECLARE @indexname sysname
    DECLARE @currentDdbId int
    SELECT @currentDdbId = DB_ID()

    PRINT CONVERT(nvarchar, GETDATE(), 126) + ': Starting'

    -- Loop over each of the indices
    DECLARE indexesToDefrag CURSOR FOR 
    SELECT 
        i.object_id, 
        i.index_id, 
        i.name
    FROM 
        sys.indexes AS i
    INNER JOIN 
        sys.objects AS o
    ON
        i.object_id = o.object_id
    WHERE 
        i.index_id > 0 AND
        o.type = 'U'

    OPEN indexesToDefrag
    -- Loop through the partitions.
    FETCH NEXT
    FROM
        indexesToDefrag
    INTO 
        @objectid, 
        @indexid,
        @indexname
    WHILE @@FETCH_STATUS = 0
    BEGIN
        -- Lookup the name of the index
        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

        PRINT CONVERT(nvarchar, GETDATE(), 126) + ': ' + @schemaname + '.' + @indexname + ' is now being rebuilt.'

        -- Fragmentation is bad enough that it will be more efficient to rebuild the index
        SELECT @baseCommand = 
            ' ALTER INDEX ' + 
                @indexname +
            ' ON ' + 
                @schemaname + '.' + object_name(@objectid) + 
            ' REBUILD WITH (FILLFACTOR = 80, ONLINE = '

        -- Use dynamic sql so this compiles in SQL 2000
        SELECT @command =
            ' BEGIN TRY ' + 
               @baseCommand + 'ON) ' +
            ' END TRY ' +
            ' BEGIN CATCH ' +
               -- Indices with image-like columns can't be rebuild online, so go offline
               @baseCommand + 'OFF) ' +
            ' END CATCH '

        PRINT CONVERT(nvarchar, GETDATE(), 126) + ': Rebuilding'
        EXEC (@command)
        PRINT CONVERT(nvarchar, GETDATE(), 126) + ': Done'

        FETCH NEXT FROM indexesToDefrag INTO @objectid, @indexid, @indexname
    END
    CLOSE indexesToDefrag
    DEALLOCATE indexesToDefrag

    RETURN 0
GO


附註在安裝 Windows SharePoint Services 3.0 SP2 之後,您沒有排程要執行的 WSS 資料庫 (內容和組態),如果您正在執行 SQL 2005 這個指令碼。這是因為排程和執行的指令碼包含在 SP2。

?考

如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
932744? (http://support.microsoft.com/kb/932744/ ) 有關 SQL Server 2005 中的維護計劃精靈和系統管理員可以執行對 SharePoint 資料庫工作
如需有關如何執行資料庫維護作業的詳細資訊,請參閱下列白皮書:
若為 Office SharePoint 伺服器 2007年資料庫維護 (http://technet.microsoft.com/en-us/library/cc262731(office.12).aspx)

這篇文章中的資訊適用於:
  • Microsoft Windows SharePoint Services 3.0
  • Microsoft Office SharePoint Server 2007
關鍵字:?
kbinfo kbexpertiseinter kbhowto kbmt KB943345 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:943345? (http://support.microsoft.com/kb/943345/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。