Estou criando uma tabela particionada chamada TestArticles, especificando vários grupos de arquivos de acordo com o ano de sua publicação (publishDate). Este código (excluindo as partes comentadas) é executado corretamente. Minha tarefa é adicionar um índice exclusivo ao campo 'hash'. Quando tento fazer isso no código de criação da tabela, recebo o seguinte erro:
'A coluna 'publishDate' é uma coluna de particionamento do índice 'UQ_Articles_hash. Colunas de particionamento de um índice exclusivo devem ser um subconjunto da chave do índice.'
Posso criar uma chave primária composta de (id, publishDate, hash) - mas não é isso que é exigido de mim.
Existe alguma maneira de especificar o hash como um índice exclusivo para cada grupo de arquivos criado ou designá-lo como tal ao inicializar a tabela inteira?
USE Articles;
GO
ALTER DATABASE Articles
ADD FILEGROUP Articles2024;
ALTER DATABASE Articles
ADD FILEGROUP Articles2025;
ALTER DATABASE Articles
ADD FILEGROUP Articles2026;
ALTER DATABASE Articles
ADD FILEGROUP Articles2027;
CREATE PARTITION FUNCTION PF_Articles_PublishDate (DATETIME)
AS RANGE RIGHT FOR VALUES
(
'2024-01-01',
'2025-01-01',
'2026-01-01'
);
CREATE PARTITION SCHEME PS_Articles_PublishDate
AS PARTITION PF_Articles_PublishDate
TO
(
Articles2024,
Articles2025,
Articles2026,
Articles2027
);
CREATE TABLE TestArticles (
id INT NOT NULL,
path VARCHAR(200) NULL,
description VARCHAR(100) NOT NULL,
publishDate DATETIME NOT NULL,
hash BIGINT NOT NULL,
authorId INT NOT NULL,
CONSTRAINT PK_Articles PRIMARY KEY CLUSTERED (id, publishDate),
CONSTRAINT FK_Articles_Authors FOREIGN KEY (authorId) REFERENCES dbo.Authors(id)
--,CONSTRAINT UQ_Articles_hash UNIQUE NONCLUSTERED (hash)
) ON PS_Articles_PublishDate (publishDate);
Banco de dados: MS SQL Server 2022 Versão: 16.0.1000.6 Detalhes do erro: Msg 1908; Nível 16; Estado 1.