Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 分区主详细表_Sql Server_Sql Server 2008_Sql Server 2008 R2_Database Partitioning - Fatal编程技术网

Sql server 分区主详细表

Sql server 分区主详细表,sql-server,sql-server-2008,sql-server-2008-r2,database-partitioning,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],

我使用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,
   ...
) 
我的明细表结构是:

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,
   ...
) 

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

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


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


列正确填充后,可以应用分区函数。

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

谢谢您的回答。如何将
Detail.MasterTypeID
Master.MasterTypeID
同步在一起?
Detail.MasterTypeID
必须是只读列,并且仅在
Master.MasterTypeID
列更改时更新。另外,
Detail.MasterTypeID
必须等于相关的
Master.MasterTypeID
,并且必须在
Master.MasterTypeID
更改时自动更改。是的,完全正确。我建议您在
Master
中创建一个
AFTER
触发器,用于插入、更新、删除
。您可以在该触发器中使用
INSERTED
DELETED
伪表来相应地更新所有
Detail
行。这是太多的代码在这里键入,但它是直截了当的;当然可以使用这种方法对我的主细节表进行分区。这些表是堆还是有聚集索引?如果它们是聚集表,则分区列需要是聚集索引或主键的一部分。