Usuário com melhor resposta
Obter o FileGroup por um determinado registro

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!
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- Marcado como Resposta João Antonio Vanelli Ferreira sábado, 22 de junho de 2013 13:46
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- Marcado como Resposta João Antonio Vanelli Ferreira sábado, 22 de junho de 2013 13:46
-