分区主详细信息表

时间:2012-08-22 06:31:22

标签: sql-server sql-server-2008 sql-server-2008-r2 database-partitioning

我使用SQL Server 2008 R2并希望将主表和明细表一起分区。如何在主表中按MasterTypeID字段对详细信息表进行分区。

我的分区功能是:

CREATE PARTITION FUNCTION MasterTypeFN(int)
AS 
RANGE LEFT FOR VALUES (1,2,3)

我的分区架构是:

CREATE PARTITION SCHEME MasterTypeScheme 
AS 
PARTITION MasterTypeFN 
TO ([FG1], [FG2], [FG3], [PRIMARY])

我的主表结构是:

CREATE TABLE [dbo].Master  
(
   [MasterID] [int] NOT NULL,
   [MasterTypeID] [int] NOT NULL,
   ...
) 
ON MasterTypeScheme (MasterTypeID)

我的详细信息表格结构是:

CREATE TABLE [dbo].Detail
(
   [DetailID] [int] NOT NULL,
   [MasterID] [int] NOT NULL,
   ...
) 

我想关于主分区的Partitioning Detail表。换句话说,我想将主表记录和相关详细信息保存在一个文件组中。

2 个答案:

答案 0 :(得分:2)

您应该在详细信息表中定义MasterTypeID列,并为其定义权限以禁用更新此列。并在Master表格上创建触发器,将MasterTypeID表格中的Master列与MasterTypeID表格中的Detail列同步。

答案 1 :(得分:1)

你想要什么是可能的。您需要将MasterTypeID的值复制到Detail表的每一行,以便可以将分区函数应用于Detail

创建新列Detail.MasterTypeID并适当填充该列。在应用程序代码中或在数据库中使用触发器。

正确填充列后,您可以应用分区功能。