Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите разобраться с секционированием  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
Добрый день. Подскажите, что я делаю не так.

Создал тестовую секционированную таблицу
CREATE PARTITION FUNCTION T1_DateFN(smalldatetime)
AS 
RANGE LEFT FOR VALUES 
('20100101', '20110101', '20120101') 
GO

CREATE PARTITION SCHEME [T1_DateScheme]
AS 
PARTITION T1_DateFN TO 
( [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY] )
GO

CREATE TABLE T1
(
    T_ID        int not null identity,
    T_Date      smalldatetime not null,
    T_Summa     money not null
) ON T1_DateScheme(T_Date)

ALTER TABLE T1
ADD CONSTRAINT PK_T1DateID
      PRIMARY KEY CLUSTERED (T_Date, T_ID)
      ON T1_DateScheme(T_Date)
GO

INSERT INTO T1 (T_Date, T_Summa)
SELECT '20091230', 1
UNION 
SELECT '20101230', 2
UNION
SELECT '20111230', 3
UNION
SELECT '20121230', 4

Затем с помощью мастера Storage - Manage Partition - Create a staging table for partition switching создал три таблицы (T1_1, T1_2, T1_3) соответственно для каждой секции.
Потом делаю так
ALTER TABLE T1
SWITCH PARTITION 1
TO T1_1

и получаю в ответ
Msg 8604, Level 16, State 1, Line 1
ALTER TABLE SWITCH statement failed. Table 'T1_1' has a column level check constraint 'chk_T1_1_partition_1' on column 'T_Date' that is not loadable for semantic validation.

Что я сделал не так?
22 фев 12, 13:55    [12136963]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с секционированием  [new]
edyaN
Member

Откуда: Berlin
Сообщений: 185
temp-for-testing,

создайте таблицы для секций вручную и посмотрите разницу.
вот так работает:
CREATE TABLE T1
(
    T_ID        int not null identity,
    T_Date      smalldatetime not null,
    T_Summa     money not null
) ON T1_DateScheme(T_Date)

ALTER TABLE T1
ADD CONSTRAINT PK_T1DateID
      PRIMARY KEY CLUSTERED (T_Date, T_ID)
      ON T1_DateScheme(T_Date)
GO

INSERT INTO T1 (T_Date, T_Summa)
SELECT '20091230', 1
UNION 
SELECT '20101230', 2
UNION
SELECT '20111230', 3
UNION
SELECT '20121230', 4


CREATE TABLE T1_1
(
    T_ID        int not null identity,
    T_Date      smalldatetime not null,
    T_Summa     money not null
)
go
ALTER TABLE T1_1
ADD CONSTRAINT PK_T1_1DateID
      PRIMARY KEY CLUSTERED (T_Date, T_ID)
GO

ALTER TABLE T1
SWITCH PARTITION 1
TO T1_1
22 фев 12, 16:43    [12138457]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить