none
Particionamento de Tabelas RRS feed

  • Pergunta

  • Boa tarde, 

    Existe alguma forma sem ser através de procedure de automatizar a criação de partições em tabelas particionadas? A exemplo do Oracle que cria partições automaticamente. 

    Obrigado,

    Rogério Sanches de Oliveira

    segunda-feira, 18 de maio de 2020 16:31

Todas as Respostas

  • Rogério,

    O particionamento de tabelas no SQL Server é construído através do uso das chamadas partition Functions!

    Você pode implementar sim este tipo de cenário e elaboração através do uso de Stored Procedures!

    Veja se o exemplo abaixo de como criar este ambiente particionado poderá lhe ajudar:

    Create Database Particionamento
    ON PRIMARY
    	(NAME = Particionamento_Dados,
    	  FILENAME = N'C:\SQL\Teste_Dados.mdf',
              SIZE = 2MB,
              MAXSIZE = Unlimited,
              FILEGROWTH = 10%)
    LOG ON
    	( NAME = Particionamento_Log,
    	  FILENAME = N'C:\SQL\Particionamento_Log.ldf',
              SIZE = 4MB,
              MAXSIZE = Unlimited,
              FILEGROWTH = 10%)
    
    Alter Database Particionamento 
    Add FileGroup ParticionamentoFG1
    Go
    
    Alter Database Particionamento
    Add File
     (Name = Particionamento_Dados_Segundo,
      FileName = 'C:\SQL\Particionamento_Dados_Segundo.ndf',
      Size = 2MB,
      MaxSize = Unlimited,
      Filegrowth = 10%)
    To Filegroup ParticionamentoFG1
    Go
    
    Alter Database Particionamento
    Add FileGroup ParticionamentoFG2
    Go
    
    Alter Database Particionamento
    Add File
     (Name = Particionamento_Dados_Terceiro,
      FileName = 'C:\SQL\Particionamento_Dados_Terceiro.ndf',
      Size = 5MB,
      MaxSize = Unlimited,
      Filegrowth = 10%)
    To Filegroup ParticionamentoFG2
    Go
    
    CREATE PARTITION FUNCTION PF_Valores (Int)
    AS RANGE Left FOR VALUES (1,4,8) 
    GO
    
    CREATE PARTITION SCHEME PS_Valores
    AS PARTITION PF_Valores
    TO (TesteFG1, TesteFG1, TesteFG2, TesteFG2);
    GO
     
    Create Table Valores
     (Codigo Int Identity(1,1),
      Descritivo Varchar(20) Not Null,
      Valor Int Not Null)
    On PS_Valores(Valor)
    
    
    Insert Into Valores (Descritivo, Valor)
    Values ('Este é um teste',10)
    Go 100000
    
    
    Insert Into Valores (Descritivo, Valor)
    Values ('Este é um teste',3)
    Go 100000


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

    segunda-feira, 18 de maio de 2020 16:59