我的团队正在尝试运行源代码管理中的脚本来创建分区,并且我们遇到了以下错误: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个限制?我们无法弄清楚我们如何拥有这么多分区。
这两种设置之间是否存在环境差异?
提前致谢!
答案 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_partitions存储过程。您可以 还禁用对数据库的支持(在启用后)并设置 分区数限制回1000.