自动更改分区功能和分区架构

时间:2012-06-09 07:11:17

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

我的表格结构如下:

SalesCompanyFinancialPeriod (ID int, ...)
Document (ID int, SalesCompanyFinancialPeriodID Int, ...)
DocumentDetail (ID Int, DocumentID Int, ...)

我想使用Document列值创建分区函数和分区模式,以便对DocumentDetail表和SalesCompanyFinancialPeriodID表进行分区。 我还想使用SalesCompanyFinancialPeriod表上的后触发器自动更改此分区架构和分区功能。

换句话说,我想在创建新的salescompanyfinancialperiod记录时自动在我的数据库中创建一个文件组,并用新的Document表和DocumentDetail表的记录进行分区这个新创建的文件组中的salescompanyfinancialperiodid

我该怎么做?

1 个答案:

答案 0 :(得分:1)

请参阅http://sqlfascination.com/2010/09/12/interval-partitioning-in-sql-server-2008/,它几​​乎完全相同(基于1表,但它的想法相同。)

他指出,根据MS,DML触发器无法直接执行此操作;引用Books OnLine:“......当对作为触发动作的目标的表或视图使用时,DML触发器的主体内部不允许使用以下Transact-SQL语句...,ALTER PARTITION FUNCTION ,. ..“

他说这是不真实的,但我会小心。相反,您可以创建一个存储过程来更改基于触发器运行的分区。这有点更安全,因为语句需要作为数据库所有者运行并具有数据空间权限,这可能是直接触发器中可怕的。

附注 - 在SQL 2008中,没有列表分区,只有范围分区,因此即使手动也会烦人。您可以按照以下方式欺骗它: http://www.sqlservercentral.com/articles/partition/64740/