Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Você pode alterar a maneira como uma tabela ou índice é particionado no SQL Server, no Banco de Dados SQL do Azure e na Instância Gerenciada SQL do Azure adicionando ou subtraindo o número de partições especificadas, em incrementos de 1, na função de partição da tabela ou índice particionado usando Transact-SQL. Quando adiciona uma partição, fá-lo "dividindo" uma partição existente em duas partições e redefinindo os limites das novas partições. Quando tu eliminas uma partição, fazes isso unificando os limites de duas partições em uma. Esta última ação preenche novamente uma partição e deixa a outra partição não atribuída. Analise práticas recomendadas antes de modificar uma função de partição.
Atenção
Mais de uma tabela ou índice pode usar a mesma função de partição. Quando você modifica uma função de partição, você afeta todas elas em uma única transação. Verifique as dependências da função de partição antes de modificá-la.
O particionamento de tabelas também está disponível em pools SQL dedicados no Azure Synapse Analytics, com algumas diferenças de sintaxe. Saiba mais em Particionamento de tabelas no pool SQL dedicado.
Limitações
ALTER PARTITION FUNCTION só pode ser usado para dividir uma partição em duas, ou para mesclar duas partições em uma. Para alterar a forma como uma tabela ou índice é particionado (de 10 partições para 5, por exemplo), pode utilizar qualquer uma das seguintes opções:
Crie uma nova tabela particionada com a função de partição desejada e, depois, insira os dados da tabela antiga na nova tabela usando a instrução INSERT INTO ... SELECT FROM Transact-SQL ou pelo Assistente para Gerenciar Partições no SQL Server Management Studio (SSMS).
Crie um índice clusterizado particionado num heap.
Observação
Eliminar um índice agrupado particionado resulta em um heap particionado.
Remova e reconstrua um índice particionado existente usando a instrução Transact-SQL CREATE INDEX com a cláusula DROP EXISTING = ON.
Execute uma sequência de instruções ALTER PARTITION FUNCTION.
O mecanismo de banco de dados não fornece suporte à replicação para modificar uma função de partição. Se desejar fazer alterações em uma função de partição no banco de dados de publicação, faça isso manualmente no banco de dados de assinatura.
Todos os grupos de arquivos afetados pela ALTER PARTITION FUNCTION devem estar online.
Permissões
Qualquer uma das seguintes permissões pode ser usada para executar ALTER PARTITION FUNCTION:
Permissão de "ALTER ANY DATASPACE". A permissão é atribuída por padrão aos membros da função de servidor fixa sysadmin e das funções de banco de dados fixas db_owner e db_ddladmin.
Permissão CONTROL ou ALTER na base de dados na qual a função de partição foi criada.
CONTROL SERVER ou permissão ALTER ANY DATABASE no servidor do banco de dados no qual a função de partição foi criada.
Consultar objetos particionados em um banco de dados
A consulta a seguir lista todos os objetos particionados em um banco de dados. Isso pode ser usado para verificar as dependências de uma função de partição antes de modificá-la.
SELECT
PF.name AS PartitionFunction,
ds.name AS PartitionScheme,
OBJECT_SCHEMA_NAME(si.object_id) as SchemaName,
OBJECT_NAME(si.object_id) AS PartitionedTable,
si.name as IndexName
FROM sys.indexes AS si
JOIN sys.data_spaces AS ds
ON ds.data_space_id = si.data_space_id
JOIN sys.partition_schemes AS PS
ON PS.data_space_id = si.data_space_id
JOIN sys.partition_functions AS PF
ON PF.function_id = PS.function_id
WHERE ds.type = 'PS'
AND OBJECTPROPERTYEX(si.object_id, 'BaseType') = 'U'
ORDER BY PartitionFunction, PartitionScheme, SchemaName, PartitionedTable;
Dividir uma partição com Transact-SQL
No Pesquisador de Objetos, conecte-se ao banco de dados de destino.
Na barra Padrão, selecione Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e selecione Executar.
Este exemplo:
- Verifica se há uma versão anterior da função de partição
myRangePF1e a exclui se for encontrada. - Cria uma função de partição chamada
myRangePF1que particiona uma tabela em quatro partições. - Divide a partição entre boundary_values 100 e 1000 para criar uma partição entre boundary_values 100 e 500 e uma partição entre boundary_values 500 e 1000.
IF EXISTS (SELECT * FROM sys.partition_functions WHERE name = 'myRangePF1') DROP PARTITION FUNCTION myRangePF1; GO CREATE PARTITION FUNCTION myRangePF1 (int) AS RANGE LEFT FOR VALUES ( 1, 100, 1000 ); GO ALTER PARTITION FUNCTION myRangePF1 () SPLIT RANGE (500);- Verifica se há uma versão anterior da função de partição
Mesclar duas partições com Transact-SQL
No Pesquisador de Objetos, conecte-se ao banco de dados de destino.
Na barra Padrão, selecione Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e selecione Executar.
Este exemplo:
- Verifica se existe uma versão anterior da função de partição
myRangePF1e exclui-a se for encontrada. - Cria uma função de partição chamada
myRangePF1com três valores de limite, que resultarão em quatro partições. - Mescla a partição entre boundary_values 1 e 100 com a partição entre boundary_values 100 e 1.000.
- Isso resulta na função de partição
myRangePF1ter dois pontos de fronteira, 1 e 1.000.
IF EXISTS (SELECT * FROM sys.partition_functions WHERE name = 'myRangePF1') DROP PARTITION FUNCTION myRangePF1; GO CREATE PARTITION FUNCTION myRangePF1 (int) AS RANGE LEFT FOR VALUES ( 1, 100, 1000 ); GO ALTER PARTITION FUNCTION myRangePF1 () MERGE RANGE (100);- Verifica se existe uma versão anterior da função de partição
Excluir uma função de partição com o SSMS
No Pesquisador de Objetos, conecte-se ao banco de dados de destino.
Expanda o banco de dados onde você deseja excluir a função de partição e, em seguida, expanda a pasta Storage.
Expanda a pasta Partition Functions.
Clique com o botão direito do rato na função de partição que pretende eliminar e selecione Eliminar.
Na caixa de diálogo Excluir Objeto, verifique se a função de partição correta está selecionada e selecione OK.
Próximos passos
Saiba mais sobre conceitos relacionados nos seguintes artigos: