none
Duvida com Particionamento RRS feed

  • Pergunta

  • Bom dia a todos

    Tenho um banco de dados que foi particionado e não tenho tanto conhecimento sobre particionamento, mas o seguinte.

    O banco foi criado os filegroups, o partition function e o partition schema ate o ano de 2016. Queria aumentar essa data ate 2025 por exemplo o passo a seguir seria o seguinte:

    Criar os novos filegroups dos anos que necessito?

    alterar o partition function e o partition schema colocando as informações ate 2025 ?

    Segue abaixo as informações dos filegroups, partition schema e partition function.

    FILEGROUPS(Colquei o exemplo apenas do ano 2025 mas atualmente o banco tem apenas filegroups ate 2016)

     ALTER DATABASE SysacME ADD FILEGROUP [SysacME2025_1]
      ALTER DATABASE SysacME ADD FILEGROUP [SysacME2025_2]
      ALTER DATABASE SysacME ADD FILEGROUP [SysacME2025_3]
      ALTER DATABASE SysacME ADD FILEGROUP [SysacME2025_4]
      GO

    PARTITION SCHEMA:

    CREATE PARTITION SCHEME [PS_PARTICIONAMENTO_DATA] AS PARTITION [PF_PARTICIONAMENTO_DATA] TO 
    ([SysacME2013_1], [SysacME2013_2], [SysacME2013_3], [SysacME2013_4], 
    [SysacME2014_1], [SysacME2014_2], [SysacME2014_3], [SysacME2014_4], 
    [SysacME2015_1], [SysacME2015_2], [SysacME2015_3], [SysacME2015_4], 
    [SysacME2016_1], [SysacME2016_2], [SysacME2016_3], [SysacME2016_4], 
    [SysacME2017_1], [SysacME2017_2], [SysacME2017_3], [SysacME2017_4],
    [SysacME2018_1], [SysacME2018_2], [SysacME2018_3], [SysacME2018_4], 
    [SysacME2019_1], [SysacME2019_2], [SysacME2019_3], [SysacME2019_4],
    [SysacME2020_1], [SysacME2020_2], [SysacME2020_3], [SysacME2020_4],
    [SysacME2021_1], [SysacME2021_2], [SysacME2021_3], [SysacME2021_4],
    [SysacME2022_1], [SysacME2022_2], [SysacME2022_3], [SysacME2022_4],
    [SysacME2023_1], [SysacME2023_2], [SysacME2023_3], [SysacME2023_4],
    [SysacME2024_1], [SysacME2024_2], [SysacME2024_3], [SysacME2024_4],
    [SysacME2025_1], [SysacME2025_2], [SysacME2025_3], [SysacME2025_4],
    [PRIMARY])
    GO

    PARTITION FUNCTION:


    CREATE PARTITION FUNCTION [PF_PARTICIONAMENTO_DATA](datetime) AS RANGE LEFT FOR VALUES 

     N'2013-03-31T00:00:00.000', N'2013-06-30T00:00:00.000', N'2013-09-30T00:00:00.000', N'2013-12-31T00:00:00.000', 
     N'2014-03-31T00:00:00.000', N'2014-06-30T00:00:00.000', N'2014-09-30T00:00:00.000', N'2014-12-31T00:00:00.000', 
     N'2015-03-31T00:00:00.000', N'2015-06-30T00:00:00.000', N'2015-09-30T00:00:00.000', N'2015-12-31T00:00:00.000', 
     N'2016-03-31T00:00:00.000', N'2016-06-30T00:00:00.000', N'2016-09-30T00:00:00.000', N'2016-12-31T00:00:00.000', 
     N'2017-03-31T00:00:00.000', N'2017-06-30T00:00:00.000', N'2017-09-30T00:00:00.000', N'2017-12-31T00:00:00.000',
     N'2018-03-31T00:00:00.000', N'2018-06-30T00:00:00.000', N'2018-09-30T00:00:00.000', N'2018-12-31T00:00:00.000',
     N'2019-03-31T00:00:00.000', N'2019-06-30T00:00:00.000', N'2019-09-30T00:00:00.000', N'2019-12-31T00:00:00.000',
     N'2020-03-31T00:00:00.000', N'2020-06-30T00:00:00.000', N'2020-09-30T00:00:00.000', N'2020-12-31T00:00:00.000',
     N'2021-03-31T00:00:00.000', N'2021-06-30T00:00:00.000', N'2021-09-30T00:00:00.000', N'2021-12-31T00:00:00.000',
     N'2022-03-31T00:00:00.000', N'2022-06-30T00:00:00.000', N'2022-09-30T00:00:00.000', N'2022-12-31T00:00:00.000',
     N'2023-03-31T00:00:00.000', N'2023-06-30T00:00:00.000', N'2023-09-30T00:00:00.000', N'2023-12-31T00:00:00.000',
     N'2024-03-31T00:00:00.000', N'2024-06-30T00:00:00.000', N'2024-09-30T00:00:00.000', N'2024-12-31T00:00:00.000',
     N'2025-03-31T00:00:00.000', N'2025-06-30T00:00:00.000', N'2025-09-30T00:00:00.000', N'2025-12-31T00:00:00.000'
     )
    GO

    A duvida principal é porque o sistema ao executar uma consulta de relatorio de vendas, desse ano, esta indo em partições de 2016, acredito que como não existe filegroups desse ano deve ter armazenado no ano de 2016.

    E se estiver correto, se criar esses filegroups as informações a partir da criação ja vão estar armazenados nos novos filegroups criados ? ou vai ter que fazer outra configuração para que as informações entrem para o filegroup correto

    Obrigado desde ja.


    quarta-feira, 11 de setembro de 2019 13:05

Respostas

  • Dyego, nenhuma pergunta é óbvia! ;)


    Sim. É isso que tem que fazer:

    - Criar Filegroups 

    - Criar arquivos

    - Alterar Function

    - Alterar Schema

    Mas volto na pergunta: quão grande sua tabela é?
    Dependendo do tamanho sugiro uma outra estratégia pra você que é a de criar uma tabela nova, particionada corretamente e mover os dados.

    Digo isso porque eu mesma já tive uma tabela corrompida por causa de alteração de particionamento exatamente como você precisa fazer. COmo ele move os dados fisicamente, se a tabela for grande eu não aconselho fazer dessa maneira.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    • Marcado como Resposta Dyego Rodrigues sexta-feira, 13 de setembro de 2019 12:37
    quinta-feira, 12 de setembro de 2019 20:27
  • A duvida principal é porque o sistema ao executar uma consulta de relatorio de vendas, desse ano, esta indo em partições de 2016, acredito que como não existe filegroups desse ano deve ter armazenado no ano de 2016.

    E se estiver correto, se criar esses filegroups as informações a partir da criação ja vão estar armazenados nos novos filegroups criados ? ou vai ter que fazer outra configuração para que as informações entrem para o filegroup correto

    Obrigado desde ja.


    Dyego,

    Vamos lá, vou tentar te responder, com base nas questões que você apresentou:

    A duvida principal é porque o sistema ao executar uma consulta de relatorio de vendas, desse ano, esta indo em partições de 2016, acredito que como não existe filegroups desse ano deve ter armazenado no ano de 2016.

    -- Sim, somente a partir do momento em que o filegroup for criada o SQL Server vai distribuir os dados deste no partition function, tendo como base os dados que atendam este faixa.

    E se estiver correto, se criar esses filegroups as informações a partir da criação ja vão estar armazenados nos novos filegroups criados ? ou vai ter que fazer outra configuração para que as informações entrem para o filegroup correto.

    -- Normalmente isso é feito de forma automática, podem existir casos que você terá que realizar um Merge para atender a distribuição de faixa de valores, entre uma partição já existente e uma nova a ser criada.

    Recomendo que você acesse a documentação oficial para saber mais sobre Alter Partition Function. 

    Um detalhe importante, ao adicionar novos filegroups, verifique se os mesmos estão ativos e disponibilizados para serem utilizados, por padrão o SQL Server já os define como Online e disponibiliza para uso.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Dyego Rodrigues quarta-feira, 11 de setembro de 2019 13:25
    quarta-feira, 11 de setembro de 2019 13:20
    Moderador
  • Tenho que criar os filegroups novos, e alterar o partition function e o schema para que comece a validar as informações nesses filegroups e o sistema passar a buscar as informações nele ?

    Esse é o caminho inicial.

     


    José Diz     Belo Horizonte, MG - Brasil     [T-SQL performance tuning: Porto SQL]   [e-mail]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Marcado como Resposta Dyego Rodrigues quarta-feira, 11 de setembro de 2019 13:25
    • Editado José Diz quarta-feira, 11 de setembro de 2019 19:46
    quarta-feira, 11 de setembro de 2019 13:24
  • Dyeogo,

    "então teoricamente os dados que ele ira movimentar para o filegroup novo é somente do ano de 2019 estou correto ?"

    Sim é isso mesmo.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Dyego Rodrigues sexta-feira, 13 de setembro de 2019 12:37
    sexta-feira, 13 de setembro de 2019 12:23
    Moderador
  • E o processo para executar tal tarefa seria esse mesmo, estou correto ?

    ***********************************************************

    ALTER PARTITION FUNCTION PF_PARTICIONAMENTO_DATA ()  
    SPLIT RANGE ('2019-03-31')

    ALTER PARTITION FUNCTION PF_PARTICIONAMENTO_DATA ()  
    SPLIT RANGE ('2019-06-31')

    E assim por diante ate fechar a data que criei

    E para alterar o schema seria dessa forma também ?

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_1

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_2

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_3

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_4

    ****************************************************************************

    Dyego,

    Aparentemente é isso mesmo, não conhecemos o seu ambiente e suas regras e negócio, analisando brevemente o código esta coerente.

    Monte um ambiente de testes, afim de evitar problemas, sempre faça um backup antes de implementar qualquer alteração na estrutura física e lógica dos seus dados.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Dyego Rodrigues sexta-feira, 13 de setembro de 2019 12:37
    sexta-feira, 13 de setembro de 2019 12:30
    Moderador

Todas as Respostas

  • A duvida principal é porque o sistema ao executar uma consulta de relatorio de vendas, desse ano, esta indo em partições de 2016, acredito que como não existe filegroups desse ano deve ter armazenado no ano de 2016.

    E se estiver correto, se criar esses filegroups as informações a partir da criação ja vão estar armazenados nos novos filegroups criados ? ou vai ter que fazer outra configuração para que as informações entrem para o filegroup correto

    Obrigado desde ja.


    Dyego,

    Vamos lá, vou tentar te responder, com base nas questões que você apresentou:

    A duvida principal é porque o sistema ao executar uma consulta de relatorio de vendas, desse ano, esta indo em partições de 2016, acredito que como não existe filegroups desse ano deve ter armazenado no ano de 2016.

    -- Sim, somente a partir do momento em que o filegroup for criada o SQL Server vai distribuir os dados deste no partition function, tendo como base os dados que atendam este faixa.

    E se estiver correto, se criar esses filegroups as informações a partir da criação ja vão estar armazenados nos novos filegroups criados ? ou vai ter que fazer outra configuração para que as informações entrem para o filegroup correto.

    -- Normalmente isso é feito de forma automática, podem existir casos que você terá que realizar um Merge para atender a distribuição de faixa de valores, entre uma partição já existente e uma nova a ser criada.

    Recomendo que você acesse a documentação oficial para saber mais sobre Alter Partition Function. 

    Um detalhe importante, ao adicionar novos filegroups, verifique se os mesmos estão ativos e disponibilizados para serem utilizados, por padrão o SQL Server já os define como Online e disponibiliza para uso.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Dyego Rodrigues quarta-feira, 11 de setembro de 2019 13:25
    quarta-feira, 11 de setembro de 2019 13:20
    Moderador
  • Desde ja obrigado pela Ajuda Junior. 

    Então teoricamente estou correto ali ? 

    Tenho que criar os filegroups novos, e alterar o partition function e o schema para que começe a validar as informações nesses filegroups e o sistema passar a buscar as informações nele ?

    quarta-feira, 11 de setembro de 2019 13:23
  • Tenho que criar os filegroups novos, e alterar o partition function e o schema para que comece a validar as informações nesses filegroups e o sistema passar a buscar as informações nele ?

    Esse é o caminho inicial.

     


    José Diz     Belo Horizonte, MG - Brasil     [T-SQL performance tuning: Porto SQL]   [e-mail]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Marcado como Resposta Dyego Rodrigues quarta-feira, 11 de setembro de 2019 13:25
    • Editado José Diz quarta-feira, 11 de setembro de 2019 19:46
    quarta-feira, 11 de setembro de 2019 13:24
  • Obrigado José

    Agradeço a ajuda.

    quarta-feira, 11 de setembro de 2019 13:25
  • Dyego,

    Sim, esta certo.

    Tenho que criar os filegroups novos, e alterar o partition function e o schema para que começe a validar as informações nesses filegroups e o sistema passar a buscar as informações nele ?

    Sim, exatamente isso.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 11 de setembro de 2019 18:44
    Moderador
  • Boa tarde

    Surgiu uma duvida na alteração do function e do schema, pois o banco ja esta particionado, assim não consigo somente deletar ela para criar novamente com os novos filegroups.

    Deu uma lida no link dos docs da microsoft mas não tive muito sucesso, para realizar a alteração do function e do esquema.

    quinta-feira, 12 de setembro de 2019 18:37
  • Olá Dyego, tudo bem?

    Você terá que usar o ALTER PARTITION FUNCTION E ALTER PARTITION SCHEME

    Com esses dois comandos você altera a função de partitionamento, adicionando os valores novos, e depois informa no schema os filegroups para cada valor que inseriu na function.

    Um problema que você vai enfrentar é: como já existem dados com os valores que você está inserindo na sua function, quando você alterá-la esses dados serão fisicamente movidos de arquivo. 
    Se sua tabela for grande, isso pode ser um problema e tanto.


    Nos informe sua dúvida sobre os links acima e o tamanho da tabela para podermos direcionar melhor a resposta.



    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    quinta-feira, 12 de setembro de 2019 19:32
  • Então minha duvida é justamente essa, no caso seria dessa forma ?

    ALTER PARTITION FUNCTION PF_PARTICIONAMENTO_DATA ()  
    SPLIT RANGE ('2019-03-31')

    ALTER PARTITION FUNCTION PF_PARTICIONAMENTO_DATA ()  
    SPLIT RANGE ('2019-06-31')

    E assim por diante ate fechar a data que criei

    E para alterar o schema seria dessa forma também ?

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_1

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_2

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_3

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_4

    E assim por diante ate chegar nos filegroups que criei ?

    Não tenho muito conhecimento nessa parte de particionamento, apenas fiz uma vez e agora estou precisando alterar, então pode ser meio obvia minha pergunta, mas desde ja obrigado,

    quinta-feira, 12 de setembro de 2019 19:48
  • Dyego, nenhuma pergunta é óbvia! ;)


    Sim. É isso que tem que fazer:

    - Criar Filegroups 

    - Criar arquivos

    - Alterar Function

    - Alterar Schema

    Mas volto na pergunta: quão grande sua tabela é?
    Dependendo do tamanho sugiro uma outra estratégia pra você que é a de criar uma tabela nova, particionada corretamente e mover os dados.

    Digo isso porque eu mesma já tive uma tabela corrompida por causa de alteração de particionamento exatamente como você precisa fazer. COmo ele move os dados fisicamente, se a tabela for grande eu não aconselho fazer dessa maneira.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    • Marcado como Resposta Dyego Rodrigues sexta-feira, 13 de setembro de 2019 12:37
    quinta-feira, 12 de setembro de 2019 20:27
  • Marina,

    Nossa, uma tabela corrompida na movimentação dos dados? Eu particularmente nunca presenciei este problema.

    Mas não é a primeira vez que alguém aborda este cenário, por acaso a sua tabela tinha mais de 100 milhões de registros?

    Os filegroups estão localizados no mesmo local?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 12 de setembro de 2019 23:41
    Moderador
  • Sim a tabela é grande. Ja é particionada, ate o ano de 2018, minha intenção inicial é aumentar para ate 2025 por exemplo, para que não seja preciso mexer nisso durante um tempo, então teoricamente os dados que ele ira movimentar para o filegroup novo é somente do ano de 2019 estou correto ?

    E a duvida era se os cripts que coloquei no post acima esta correto para fazer esse processo.

    sexta-feira, 13 de setembro de 2019 11:42
  • Dyeogo,

    "então teoricamente os dados que ele ira movimentar para o filegroup novo é somente do ano de 2019 estou correto ?"

    Sim é isso mesmo.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Dyego Rodrigues sexta-feira, 13 de setembro de 2019 12:37
    sexta-feira, 13 de setembro de 2019 12:23
    Moderador
  • E o processo para executar tal tarefa seria esse mesmo, estou correto ?

    ***********************************************************

    ALTER PARTITION FUNCTION PF_PARTICIONAMENTO_DATA ()  
    SPLIT RANGE ('2019-03-31')

    ALTER PARTITION FUNCTION PF_PARTICIONAMENTO_DATA ()  
    SPLIT RANGE ('2019-06-31')

    E assim por diante ate fechar a data que criei

    E para alterar o schema seria dessa forma também ?

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_1

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_2

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_3

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_4

    ****************************************************************************

    sexta-feira, 13 de setembro de 2019 12:26
  • E o processo para executar tal tarefa seria esse mesmo, estou correto ?

    ***********************************************************

    ALTER PARTITION FUNCTION PF_PARTICIONAMENTO_DATA ()  
    SPLIT RANGE ('2019-03-31')

    ALTER PARTITION FUNCTION PF_PARTICIONAMENTO_DATA ()  
    SPLIT RANGE ('2019-06-31')

    E assim por diante ate fechar a data que criei

    E para alterar o schema seria dessa forma também ?

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_1

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_2

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_3

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_4

    ****************************************************************************

    Dyego,

    Aparentemente é isso mesmo, não conhecemos o seu ambiente e suas regras e negócio, analisando brevemente o código esta coerente.

    Monte um ambiente de testes, afim de evitar problemas, sempre faça um backup antes de implementar qualquer alteração na estrutura física e lógica dos seus dados.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Dyego Rodrigues sexta-feira, 13 de setembro de 2019 12:37
    sexta-feira, 13 de setembro de 2019 12:30
    Moderador
  • Marina,

    Nossa, uma tabela corrompida na movimentação dos dados? Eu particularmente nunca presenciei este problema.

    Mas não é a primeira vez que alguém aborda este cenário, por acaso a sua tabela tinha mais de 100 milhões de registros?

    Os filegroups estão localizados no mesmo local?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    Olá Junior.

    Sim! A tabela tinha pouco mais de 400 milhões de registros e não havia sido feito o particionamento de 2018. Estávamos na metade do ano e quando fui alterar a function, ele ficou executando por 6 h e colocou o banco em suspect.
    Após suar frio descobri que a tabela tinha sido corrompida.

    Desde então eu prefiro criar uma cópia particionada da tabela, mover os dados e dropar a original. 
    Acho mais seguro já que caso dê algo errado a tabela original está preservada.

    Em tabelas pequenas não tive problemas em fazer "a quente".
    Os arquivos estavam em discos diferentes na storage. Costumávamos deixar os mais antigos em storage de menor performance  e os mais novos, nas mais rápidas.

    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    sexta-feira, 13 de setembro de 2019 12:32
  • E o processo para executar tal tarefa seria esse mesmo, estou correto ?

    ***********************************************************

    ALTER PARTITION FUNCTION PF_PARTICIONAMENTO_DATA ()  
    SPLIT RANGE ('2019-03-31')

    ALTER PARTITION FUNCTION PF_PARTICIONAMENTO_DATA ()  
    SPLIT RANGE ('2019-06-31')

    E assim por diante ate fechar a data que criei

    E para alterar o schema seria dessa forma também ?

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_1

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_2

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_3

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_4

    ****************************************************************************

    Dyego,

    Aparentemente é isso mesmo, não conhecemos o seu ambiente e suas regras e negócio, analisando brevemente o código esta coerente.

    Monte um ambiente de testes, afim de evitar problemas, sempre faça um backup antes de implementar qualquer alteração na estrutura física e lógica dos seus dados.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    Isso, peguei um backup e estou testando, eu entendo o que fazer, o meu maior problema é como fazer mesmo, por isso perguntei se os scripts ai estavam corretos.
    sexta-feira, 13 de setembro de 2019 12:36
  • Marina,

    Nossa, uma tabela corrompida na movimentação dos dados? Eu particularmente nunca presenciei este problema.

    Mas não é a primeira vez que alguém aborda este cenário, por acaso a sua tabela tinha mais de 100 milhões de registros?

    Os filegroups estão localizados no mesmo local?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    Olá Junior.

    Sim! A tabela tinha pouco mais de 400 milhões de registros e não havia sido feito o particionamento de 2018. Estávamos na metade do ano e quando fui alterar a function, ele ficou executando por 6 h e colocou o banco em suspect.
    Após suar frio descobri que a tabela tinha sido corrompida.

    Desde então eu prefiro criar uma cópia particionada da tabela, mover os dados e dropar a original. 
    Acho mais seguro já que caso dê algo errado a tabela original está preservada.

    Em tabelas pequenas não tive problemas em fazer "a quente".
    Os arquivos estavam em discos diferentes na storage. Costumávamos deixar os mais antigos em storage de menor performance  e os mais novos, nas mais rápidas.

    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    Mari,

    Obrigado pelo feedback, imaginei justamente que era um valor acima de 100 milhões pois em alguns outros posts que pesquisei na internet identifiquei cenários com este tipo de comportamento.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 13 de setembro de 2019 23:41
    Moderador
  • E o processo para executar tal tarefa seria esse mesmo, estou correto ?

    ***********************************************************

    ALTER PARTITION FUNCTION PF_PARTICIONAMENTO_DATA ()  
    SPLIT RANGE ('2019-03-31')

    ALTER PARTITION FUNCTION PF_PARTICIONAMENTO_DATA ()  
    SPLIT RANGE ('2019-06-31')

    E assim por diante ate fechar a data que criei

    E para alterar o schema seria dessa forma também ?

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_1

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_2

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_3

    ALTER PARTITION SCHEME PS_PARTICIONAMENTO_DATA
    NEXT USED SysacME2019_4

    ****************************************************************************

    Dyego,

    Aparentemente é isso mesmo, não conhecemos o seu ambiente e suas regras e negócio, analisando brevemente o código esta coerente.

    Monte um ambiente de testes, afim de evitar problemas, sempre faça um backup antes de implementar qualquer alteração na estrutura física e lógica dos seus dados.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    Isso, peguei um backup e estou testando, eu entendo o que fazer, o meu maior problema é como fazer mesmo, por isso perguntei se os scripts ai estavam corretos.

    Dyego,

    Ok!


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 13 de setembro de 2019 23:41
    Moderador