Boa Noite Srs,
Tenho a seguinte tabela fato:
CREATE TABLE [dbo].[FactVendas](
[CodSKCliente] [int] NOT NULL,
[CodSKRegiao] [int] NOT NULL,
[CodSKProduto] [int] NOT NULL,
[CodSKTempo] [int] NOT NULL,
[ValorProduto] [numeric](18, 2) NULL,
[QuantidadeVendido] [int] NULL,
CONSTRAINT [PK_ResultadoFinanceiro] PRIMARY KEY CLUSTERED
(
[CodSKCliente] ASC,
[CodSKRegiao] ASC,
[CodSKProduto] ASC,
[CodSKTempo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
GO
Desejo particionar a coluna CodSkTempo, desde então fiz o seguinte:
ALTER DATABASE DBSQL
ADD FILEGROUP FG1
GO
ALTER DATABASE DBSQL
ADD FILE (
NAME = N'FG1File',
FILENAME = N'C:\pasta\FG1.ndf',
SIZE = 1024KB,
MAXSIZE = 10485760KB,
FILEGROWTH = 1024KB
)
TO FILEGROUP FG1
GO
-- OS VALORES ABAIXO CORRESPONDE AS DATAS DE 2010, 2012 E 2014
CREATE PARTITION FUNCTION
MyPartitionFunctionLeft
(int)
AS RANGE LEFT
FOR VALUES (11157,11887,12618)
GO
CREATE PARTITION SCHEME myRangePS1
AS PARTITION MyPartitionFunctionLeft
TO (FG1,FG1,FG1,FG1);
O que preciso? Particionar apenas a coluna CodSkTempo, porém a mesma fica dentro de um indice composto por outros, sendo assim, não tenho como colocar apenas esse indice dentro de um filegroup e particionar, pois fora o CodSkTempo indice, existem outros
tambem...
ao executar a consulta:
select p.index_id, p.partition_number,
pc.leaf_null_bit,
coalesce(cx.name, c.name) as column_name,
pc.partition_column_id,
pc.max_inrow_length,
pc.max_length,
pc.key_ordinal,
pc.leaf_offset,
pc.is_nullable,
pc.is_dropped,
pc.is_uniqueifier,
pc.is_sparse,
pc.is_anti_matter
from sys.system_internals_partitions p
join sys.system_internals_partition_columns pc
on p.partition_id = pc.partition_id
left join sys.index_columns ic
on p.object_id = ic.object_id
and ic.index_id = p.index_id
and ic.index_column_id = pc.partition_column_id
left join sys.columns c
on p.object_id = c.object_id
and ic.column_id = c.column_id
left join sys.columns cx
on p.object_id = cx.object_id
and p.index_id in (0,1)
and pc.partition_column_id = cx.column_id
where p.object_id = object_id('FactVendas')
order by index_id, partition_number;
obtive:
index_id partition_number
leaf_null_bit column_name
partition_column_id
1 1 1
CodSKCliente 1
1 1 2
CodSKRegiao 2
....
index_id partition_number
leaf_null_bit column_name
partition_column_id
1 2 1
CodSKCliente 1
1 2 2
CodSKRegiao 2
Sendo que na verdade o seria seria 1 partição para todos, exceto CodSkTempo...
Espero que tenham me entendido...
Obrigado