Разделение Exchange как метод публикации в SQL Server? - PullRequest
0 голосов
/ 06 января 2010

Я знаком с концепцией использования разделов в Oracle в качестве метода публикации добавочных добавлений к таблицам (в контексте DW).

( как в этом примере )

Например. ежедневный моментальный снимок для таблицы фактов витрины данных загружается за кулисы в разделе внутри таблицы. например, с датой в качестве ключа раздела (1 многораздельная таблица, только с одним разделом). После завершения загрузки и проверки содержимого раздел можно «обменять» на таблицу истинного назначения (1 разделенная таблица с несколькими разделами) в качестве события словаря.

Возможен ли такой же тип публикации в SQL Server 2008?

Ответы [ 2 ]

0 голосов
/ 10 января 2010

Да, и вот пример для SQL Server 2008 Enterprise

Функция разделения по годам 1:= Y < 2008, 2:= 2008, 3:= 2009, 4:= 2010, 5:= Y >= 2011

/* First create a partition function */
CREATE PARTITION FUNCTION myPFun (int)
AS RANGE RIGHT FOR VALUES (20080101, 20090101, 20100101, 20110101);
GO

Схема разбиения для сопоставления диапазонов с файловыми группами. Для этого примера я сопоставлю все разделы с группой файлов PRIMARY.

/* Then a partition scheme */
CREATE PARTITION SCHEME myPRng
AS PARTITION myPFun
ALL TO ( [PRIMARY] ); 
GO

И таблица фактов, разбитая по годам

/* Fact table partitioned by year */
CREATE TABLE factTbl (DateKey int, Value int)
ON myPRng (DateKey) ;
GO

промежуточный стол, разделенный таким же образом

/* Staging table partitioned the same way as the fact table */
CREATE TABLE stageTbl (DateKey int, Value int)
ON myPRng (DateKey) ;
GO

Некоторые данные для проверки

/* Populate fact table (years 2008, 2009)*/
INSERT  INTO factTbl
        ( DateKey, Value )
VALUES  ( 20080205, 10 )
,       ( 20080711, 25 )
,       ( 20090525, 43 );

/* Populate staging table (year 2010) */
INSERT  INTO stageTbl
        ( DateKey, Value )
VALUES  ( 20100107, 10 );

И переключить раздел с промежуточной таблицы на таблицу фактов

/* From staging table to fact table */
ALTER TABLE stageTbl SWITCH PARTITION 4 TO factTbl PARTITION 4;
GO

Для проверки

SELECT * FROM factTbl

Возвращает

DateKey     Value
----------- -----------
20080205    10
20080711    25
20090525    43
20100107    10

Подробнее см. статья MSDN .

0 голосов
/ 06 января 2010

Секционирование таблиц доступно в выпусках Developer и Enterprise продукта SQL Server и позволит вам выполнить этот процесс - автоматизировать его с помощью хранимых процедур и т. Д. Немного сложнее, но достижимо.

...