none
Particionamento RRS feed

  • Pergunta

  • Pessoal é possivel tirar o particionamento de uma base? ou apenas desabilitar? se sim poderiam me passar materiais de como fazer? 
    quarta-feira, 19 de novembro de 2014 13:39

Respostas

  • tem alguma query que eu consigo para levantar os meus objetos que hoje estao na partição?

    porque ai dessa forma faço backup destes objetos e depois apago a particao.

    Renata,

    Segue um script para você visualizar os objetos particionados:

    SELECT SCHEMA_NAME(o.schema_id) + '.' + OBJECT_NAME(i.object_id) AS [object]
         , p.partition_number AS [p#]
         , fg.name AS [filegroup]
         , p.rows
         , au.total_pages AS pages
         , CASE boundary_value_on_right
           WHEN 1 THEN 'less than'
           ELSE 'less than or equal to' END as comparison
         , rv.value
         , CONVERT (VARCHAR(6), CONVERT (INT, SUBSTRING (au.first_page, 6, 1) +
           SUBSTRING (au.first_page, 5, 1))) + ':' + CONVERT (VARCHAR(20),
           CONVERT (INT, SUBSTRING (au.first_page, 4, 1) +
           SUBSTRING (au.first_page, 3, 1) + SUBSTRING (au.first_page, 2, 1) +
           SUBSTRING (au.first_page, 1, 1))) AS first_page
    FROM sys.partitions p
    INNER JOIN sys.indexes i
         ON p.object_id = i.object_id
    AND p.index_id = i.index_id
    INNER JOIN sys.objects o
         ON p.object_id = o.object_id
    INNER JOIN sys.system_internals_allocation_units au
         ON p.partition_id = au.container_id
    INNER JOIN sys.partition_schemes ps
         ON ps.data_space_id = i.data_space_id
    INNER JOIN sys.partition_functions f
         ON f.function_id = ps.function_id
    INNER JOIN sys.destination_data_spaces dds
         ON dds.partition_scheme_id = ps.data_space_id
         AND dds.destination_id = p.partition_number
    INNER JOIN sys.filegroups fg
         ON dds.data_space_id = fg.data_space_id
    LEFT OUTER JOIN sys.partition_range_values rv
         ON f.function_id = rv.function_id
         AND p.partition_number = rv.boundary_id
    WHERE i.index_id < 2
    GO

    Segue a evidência de teste para esta consulta:

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta Renata Cardoso segunda-feira, 24 de novembro de 2014 11:34
    quarta-feira, 19 de novembro de 2014 18:51
    Moderador

Todas as Respostas

  • Renata,

    É possível remover sim.

    Este link vai te ajudar.

    http://www.patrickkeisler.com/2013/01/how-to-remove-undo-table-partitioning.html



    Keny Maciel da Silva
    DBA SQL-Server ITGROUP
    MCTS SQL Server 2008 Implementation and Maintenance
    Email: kenymaciel@gmail.com

    quarta-feira, 19 de novembro de 2014 13:50
  • Renata,

    De qual tipo de particionamento você esta se referindo?

    Você esta se referindo a Filegroup, Partition Function ou até mesmo Particionamento Horizontal e Vertical?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 19 de novembro de 2014 14:27
  • FileGroup eu preciso migrar de Enterprise para Standard e para isso preciso remover o particionamento.
    quarta-feira, 19 de novembro de 2014 14:30
  • Renata,

    Como assim?

    A edição Standard trabalhar tranquilamente com Filegroups, será que você não esta se referindo a Partition Function? Pois este recurso não é suportado no SQL Server Standard.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 19 de novembro de 2014 14:45
  • é isso mesmo coloquei errado 

    Partition Function

    quarta-feira, 19 de novembro de 2014 14:47
  • Renata,

    Certo, foi o que pensei!!!

    Então basicamente o processo é simples, quando criamos Partition Function Scheme, estamos implementando um recurso que terá a função de direcionar os dados de acordo com a sua faixa de valores de uma tabela ou outra de acordo com o Schema que a tabela esta vinculada.

    Sendo assim, o que você deveria fazer seria migrar as tabelas que estão relacionadas com o Partition Function Schema para outro Filegroup e posteriormente, remover a Partition Function Schema e depois Partition Function.

    Não se esqueça que sua tabela esta vinculada ao Partition Schema que esta por sua vez envolvido com algum Filegroup do seu ambiente.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 19 de novembro de 2014 17:15
  • tem alguma query que eu consigo para levantar os meus objetos que hoje estao na partição?

    porque ai dessa forma faço backup destes objetos e depois apago a particao.

    quarta-feira, 19 de novembro de 2014 18:24
  • tem alguma query que eu consigo para levantar os meus objetos que hoje estao na partição?

    porque ai dessa forma faço backup destes objetos e depois apago a particao.

    Renata,

    Segue um script para você visualizar os objetos particionados:

    SELECT SCHEMA_NAME(o.schema_id) + '.' + OBJECT_NAME(i.object_id) AS [object]
         , p.partition_number AS [p#]
         , fg.name AS [filegroup]
         , p.rows
         , au.total_pages AS pages
         , CASE boundary_value_on_right
           WHEN 1 THEN 'less than'
           ELSE 'less than or equal to' END as comparison
         , rv.value
         , CONVERT (VARCHAR(6), CONVERT (INT, SUBSTRING (au.first_page, 6, 1) +
           SUBSTRING (au.first_page, 5, 1))) + ':' + CONVERT (VARCHAR(20),
           CONVERT (INT, SUBSTRING (au.first_page, 4, 1) +
           SUBSTRING (au.first_page, 3, 1) + SUBSTRING (au.first_page, 2, 1) +
           SUBSTRING (au.first_page, 1, 1))) AS first_page
    FROM sys.partitions p
    INNER JOIN sys.indexes i
         ON p.object_id = i.object_id
    AND p.index_id = i.index_id
    INNER JOIN sys.objects o
         ON p.object_id = o.object_id
    INNER JOIN sys.system_internals_allocation_units au
         ON p.partition_id = au.container_id
    INNER JOIN sys.partition_schemes ps
         ON ps.data_space_id = i.data_space_id
    INNER JOIN sys.partition_functions f
         ON f.function_id = ps.function_id
    INNER JOIN sys.destination_data_spaces dds
         ON dds.partition_scheme_id = ps.data_space_id
         AND dds.destination_id = p.partition_number
    INNER JOIN sys.filegroups fg
         ON dds.data_space_id = fg.data_space_id
    LEFT OUTER JOIN sys.partition_range_values rv
         ON f.function_id = rv.function_id
         AND p.partition_number = rv.boundary_id
    WHERE i.index_id < 2
    GO

    Segue a evidência de teste para esta consulta:

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta Renata Cardoso segunda-feira, 24 de novembro de 2014 11:34
    quarta-feira, 19 de novembro de 2014 18:51
    Moderador