如何最大限度地绕过sql-server分区?

时间:2012-03-14 14:08:34

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

我的团队正在尝试运行源代码管理中的脚本来创建分区,并且我们遇到了以下错误:CREATE/ALTER partition function failed as only a maximum of 1000 partitions can be created.

脚本的一部分:

CREATE PARTITION FUNCTION [PFDailyPartition](DATETIME)
    AS RANGE RIGHT FOR VALUES ('01/01/2005 00:00:00'
 '01/02/2005 00:00:00'
 '01/03/2005 00:00:00'
 '01/04/2005 00:00:00'
 '01/05/2005 00:00:00'
 '01/06/2005 00:00:00'
 '01/07/2005 00:00:00'
 '01/08/2005 00:00:00'
 '01/09/2005 00:00:00'
 '01/10/2005 00:00:00'
 '01/11/2005 00:00:00'
 '01/12/2005 00:00:00'
 '01/13/2005 00:00:00'
 '01/14/2005 00:00:00'
 etc...

在我们当前的设置上运行select * from sys.partition_range_values表明我们有超过10,000个分区。

有没有办法绕过这1000个限制?我们无法弄清楚我们如何拥有这么多分区。

这两种设置之间是否存在环境差异?

提前致谢!

1 个答案:

答案 0 :(得分:4)

您的分区功能是按天创建单独的分区。这是很多分区!自2005年以来,这大约是365 * 7 = 2,555个分区。你真的想在白天分开分区吗?

根据this article,SQL Server 2008 SP2和SQL Server 2008 R2 SP1将限制增加到15,000个分区。服务器之间是否存在服务包差异?

引自文章:

  

<强>问题

     

SQL Server 2005引入了表和索引分区。分区   可以使大型表和索引更易于管理和扩展。对于   有关分区的更多信息,请参阅分区表和   索引   (http://msdn.microsoft.com/en-us/library/ms188706(v=SQL.100).aspx)。在   SQL Server 2005,SQL Server 2008和SQL Server 2008 R2的编号   分区限制为1,000个。

     

客户主要使用分区来促进管理   数据仓库中的大型事实表。数据仓库客户   通常将数据作为批次加载。每日负荷是最常见的   模式,但越来越多的客户想要多次加载数据   天。如果客户每天加载,则限制为1,000个分区   可以在分区表中存储少于三年的数据,   而业务需求通常要求保留数据   更长的时间,例如七年。 1000个分区   在这种情况下,最大值成为客户的限制。

     

如果分区的合并过于复杂且耗时,则客户   更喜欢具有创建大量分区的灵活性   并在需要时使用它们。最多1,000个分区   在这种情况下成为限制。

     

<强>解决方案

     

在SQL Server 2008 SP2和SQL Server 2008 R2 SP1中,您可以选择   以数据库级粒度支持15,000个分区   通过使用新的sp_db_increased_pa​​rtitions存储过程。您可以   还禁用对数据库的支持(在启用后)并设置   分区数限制回1000.