none
Obter o FileGroup por um determinado registro RRS feed

  • Pergunta

  • Pessoal, boa noite!

    Estou com um problema e não encontrei nada no google.com ou não estou sabendo procurar. Bom tenho um determinado registro e preciso saber em qual FileGroup ele está alocado.

    Estou utilizando um Microsoft SQL Server 2008 Enterprise Edition, tenho um tabela (PART) particionada em 12 meses e um partition scheme apontando para 13 FileGroup.

    Preciso saber em qual FileGroup o registro mais antigo está para poder mover este para uma tabela de histórico (PART_HIST) será dropada/recriada no mesmo FileGroup, para depois receber os dados.

    Se alguém tem alguma dica para ajudar será de grande valia.

    Abraço!

    quinta-feira, 20 de junho de 2013 23:02

Respostas

  • João

    acho que este script poderá te ajudar...

    ;with cte_dados
    as
    (
    
    SELECT OBJECT_NAME(p.object_id) as obj_name, p.index_id, p.partition_number,d.name, p.rows, a.type, a.filegroup_id 
    FROM sys.system_internals_allocation_units a
    JOIN sys.partitions p
    ON p.partition_id = a.container_id
    left join sys.data_spaces d
    ON d.data_space_id= a.filegroup_id
    WHERE p.object_id = (OBJECT_ID(N'tbParticionada'))
    and index_id=0
    )
    
    SELECT $partition.PFN_DateRange(o.data) AS [Partition Number]
       ,data
       ,c.name
    FROM dbo.tbParticionada AS o inner join cte_dados c on $partition.PFN_DateRange(o.data) = c.partition_number
    ORDER BY [Partition Number]
    GO


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS, MCITP, MCT.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    sexta-feira, 21 de junho de 2013 15:50
    Moderador

Todas as Respostas

  • João

    acho que este script poderá te ajudar...

    ;with cte_dados
    as
    (
    
    SELECT OBJECT_NAME(p.object_id) as obj_name, p.index_id, p.partition_number,d.name, p.rows, a.type, a.filegroup_id 
    FROM sys.system_internals_allocation_units a
    JOIN sys.partitions p
    ON p.partition_id = a.container_id
    left join sys.data_spaces d
    ON d.data_space_id= a.filegroup_id
    WHERE p.object_id = (OBJECT_ID(N'tbParticionada'))
    and index_id=0
    )
    
    SELECT $partition.PFN_DateRange(o.data) AS [Partition Number]
       ,data
       ,c.name
    FROM dbo.tbParticionada AS o inner join cte_dados c on $partition.PFN_DateRange(o.data) = c.partition_number
    ORDER BY [Partition Number]
    GO


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS, MCITP, MCT.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    sexta-feira, 21 de junho de 2013 15:50
    Moderador
  • Marcelo, bom dia!

    É isso mesmo que estava precisando, funcionou certinho!

    Muito obrigado, mesmo.

    sábado, 22 de junho de 2013 13:45