ID do artigo: 943345 - Última revisão: segunda-feira, 25 de julho de 2011 - Revisão: 2.0

Como desfragmentar bancos de dados de 3.0 do Windows SharePoint Services e SharePoint Server 2007

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Recolher tudo

INTRODUÇÃO

Este artigo descreve como desfragmentar os seguintes bancos de dados de 3.0 do Windows SharePoint Services e bancos de dados do Microsoft Office SharePoint Server 2007:
  • Banco de dados de pesquisa
  • Banco de dados de perfil
  • Banco de dados de conteúdo

Mais Informações

Quando o seguinte script de Microsoft SQL Server é executado, ele mede o grau de fragmentação. O grau de fragmentação é definido como o número de blocos que são logicamente linear, mas fisicamente não linear.

Dependendo do nível de fragmentação do índice SQL, uma desfragmentação offline ou on-line ocorre. A desfragmentação online é definida como uma desfragmentação, que não utilizar bloqueios SQL e que desfragmenta somente nós de folha. Uma desfragmentação offline leva a bloqueios SQL e desfragmenta todos os nós.

Se a porcentagem de fragmentação é menos de 10%, a desfragmentação não ocorre. Se o grau de fragmentação é de 10 a 90%, ocorre uma desfragmentação online. Se a porcentagem de fragmentação é maior do que 90 por cento, ocorre uma desfragmentação offline.

O script a seguir tenta executar uma desfragmentação online pela primeira vez e alterna para a desfragmentação offline se for necessária a desfragmentação offline.

ImportanteA seguir SQL Server armazenado o procedimento faz alterações para bancos de dados de 3.0 do Windows SharePoint Services e bancos de dados do SharePoint Server 2007. Este script deve ser executado exatamente conforme especificado neste artigo. As alterações feitas aos bancos de dados do SharePoint Server 2007 devem seguir as diretrizes de suporte são especificadas no seguinte artigo da Base de dados de Conhecimento Microsoft:
841057  (http://support.microsoft.com/kb/841057/ ) Suporte para alterações de bancos de dados que são usados por produtos de servidor do Office e do Windows SharePoint Services
ObservaçãoRecomendamos que você hospede os bancos de dados do SharePoint Server 2007 em um computador que esteja executando o SQL Server 2005. Recomendamos que você monitore o nível de fragmentação antes e depois de executar esse script. Recomendamos que você agenda o script seja executado diariamente, semanalmente, ou mensal, conforme apropriado para sua situação.
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


ObservaçãoDepois de instalar o Windows SharePoint Services 3.0 SP2, não é necessário agendar esse script seja executado para bancos de dados WSS (conteúdo e config), se você estiver executando o SQL 2005. Isso ocorre porque a programação e a execução do script são incluídas no SP2.

Referências

Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
932744  (http://support.microsoft.com/kb/932744/ ) Informações sobre o Assistente de plano de manutenção no SQL Server 2005 e tarefas que os administradores podem executar nos bancos de dados do SharePoint
Para obter mais informações sobre como realizar a manutenção de banco de dados, consulte o seguinte documento:
Manutenção de banco de dados para o Office SharePoint Server 2007 (http://technet.microsoft.com/en-us/library/cc262731(office.12).aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft Windows SharePoint Services 3.0
  • Microsoft Office SharePoint Server 2007
Palavras-chave: 
kbinfo kbexpertiseinter kbhowto kbmt KB943345 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 943345  (http://support.microsoft.com/kb/943345/en-us/ )