关于CREATE/ALTER partition function failed as only a maximum of 1000 partitions ca

刘兄弟 2013-02-26 11:10:49
今天MSSQL2008执行脚本的时候出现Msg 7719, Level 16, State 1, Line 1
CREATE/ALTER partition function failed as only a maximum of 1000 partitions can be created.
这个提示,于是乎去网上查询了下有同样遭遇的少年们。 结果发现解决方法有:
1.在特定的版本MSSQL2008 SP2的情况下可以使用sp_db_increased_partitions 来是分区上限达到15000.
2.就是论坛里面的switch out 大致意思就是把之前弄出来,腾出位置来让之后的数据进来。问题是我弄不来。
3.我想重新把这个分区表建立为按周划分的,目前是按天划分的。


USE [mDATA]
GO
/****** Object: StoredProcedure [imp].[addpartition] Script Date: 02/26/2013 11:09:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create PROCEDURE [imp].[addpartition]
@date datetime = NULL
as

if @date is null
set @date=(select cast(max(value) as datetime)+1 from sys.partition_range_values)
if @date>GETDATE()+3
set @date=(select cast(max(value) as datetime) from sys.partition_range_values)

declare @sqlstring nvarchar(2000)
declare @filegroup nvarchar(50)

set @filegroup=N'CWDATA'+CONVERT(char(6),@date,112)

IF not exists(select * from sys.filegroups where name=@filegroup)
BEGIN

set @sqlstring=N'ALTER DATABASE [CWDATA] ADD FILEGROUP ['+@filegroup+']'
EXECUTE sp_executesql @sqlstring
--select @sqlstring;
set @sqlstring=N'ALTER DATABASE [CWDATA] ADD FILE ( NAME = N'''+@filegroup+''', FILENAME = N''F:\File\'+@filegroup+'.ndf'' , SIZE = 30720KB , FILEGROWTH = 10240KB ) TO FILEGROUP ['+@filegroup+']'
EXECUTE sp_executesql @sqlstring
--select @sqlstring;
END

IF not exists(select * from sys.partition_range_values where value=@date)
BEGIN

set @sqlstring=N'ALTER PARTITION SCHEME [SalesDateScheme] NEXT USED ['+@filegroup+']'
EXECUTE sp_executesql @sqlstring
--select @sqlstring;
set @sqlstring=N'ALTER PARTITION FUNCTION [SalesDatePFN]() SPLIT RANGE ('''+convert(varchar,@date,23)+''')'
EXECUTE sp_executesql @sqlstring
--select @sqlstring;
END


请问我要修改成按周的应该怎么弄阿
...全文
233 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_Nice 2013-02-26
  • 打赏
  • 举报
回复
引用 4 楼 jadilee 的回复:
引用 2 楼 OrchidCat 的回复:貌似,直接设个作业,每周1 执行即可。 好嘛,我自己SB了。。。哈哈 那现在的999个怎么处理喃?
拆了分区,重新分吧! 来的干净些,不过要注意测试,防止在正式运行环境出现问题。
刘兄弟 2013-02-26
  • 打赏
  • 举报
回复
引用 2 楼 OrchidCat 的回复:
貌似,直接设个作业,每周1 执行即可。
好嘛,我自己SB了。。。哈哈 那现在的999个怎么处理喃?
刘兄弟 2013-02-26
  • 打赏
  • 举报
回复
扣肉版本的。。。。。。找到了下载不了。 另外想趁这个问题了,就把分区表弄清晰点。 随便问下,我这里查到了999个分区了,那我把最之前的 删除了可以不呢? 1 2 3 4 5 。。。。 995 996 997 998 每天插入999的时候 我就删除最前那个 可以吗?
Mr_Nice 2013-02-26
  • 打赏
  • 举报
回复
貌似,直接设个作业,每周1 执行即可。
NBDBA 2013-02-26
  • 打赏
  • 举报
回复
打sp2不是更简单
刘兄弟 2013-02-26
  • 打赏
  • 举报
回复
额 。。贴错了了 这是分区函数:

USE [DATA]
GO

/****** Object:  PartitionFunction [SalesDatePFN]    Script Date: 02/26/2013 17:01:36 ******/
CREATE PARTITION FUNCTION [SalesDatePFN](date) AS RANGE RIGHT FOR VALUES (
N'2010-01-01T00:00:00.000', N'2010-01-02T00:00:00.000', N'2010-01-03T00:00:00.000', 
N'2010-01-04T00:00:00.000', N'2010-01-05T00:00:00.000', N'2010-01-06T00:00:00.000', 
N'2010-01-07T00:00:00.000', N'2010-01-08T00:00:00.000', N'2010-01-09T00:00:00.000', 
N'2010-01-10T00:00:00.000', N'2010-01-11T00:00:00.000', N'2010-01-12T00:00:00.000', 
N'2010-01-13T00:00:00.000', N'2010-01-14T00:00:00.000', N'2010-01-15T00:00:00.000', 
......,
N'2013-01-13T00:00:00.000', N'2013-01-14T00:00:00.000', N'2013-01-15T00:00:00.000', 
N'2013-01-16T00:00:00.000', N'2013-01-17T00:00:00.000', N'2013-01-18T00:00:00.000', 
N'2013-01-19T00:00:00.000', N'2013-01-20T00:00:00.000', N'2013-01-21T00:00:00.000',
N'2013-01-23T00:00:00.000', N'2013-01-24T00:00:00.000', N'2013-01-25T00:00:00.000',
N'2013-01-26T00:00:00.000')
GO

刘兄弟 2013-02-26
  • 打赏
  • 举报
回复
一下是分区方案:

USE [DATA]
GO

/****** Object:  PartitionFunction [SalesDatePFN]    Script Date: 02/26/2013 16:40:17 ******/
CREATE PARTITION FUNCTION [SalesDatePFN](date) AS RANGE RIGHT 
FOR VALUES (
N'2010-01-01T00:00:00.000', N'2010-01-02T00:00:00.000', N'2010-01-03T00:00:00.000', N'2010-01-04T00:00:00.000', 
N'2010-01-05T00:00:00.000', N'2010-01-06T00:00:00.000', N'2010-01-07T00:00:00.000', N'2010-01-08T00:00:00.000', 
N'2010-01-09T00:00:00.000', N'2010-01-10T00:00:00.000', N'2010-01-11T00:00:00.000', N'2010-01-12T00:00:00.000', 
N'2010-01-13T00:00:00.000', N'2010-01-14T00:00:00.000', N'2010-01-15T00:00:00.000', N'2010-01-16T00:00:00.000',
N'2012-08-25T00:00:00.000', N'2012-08-26T00:00:00.000', N'2012-08-27T00:00:00.000', N'2012-08-28T00:00:00.000', 
......,

N'2013-01-16T00:00:00.000', N'2013-01-17T00:00:00.000', N'2013-01-18T00:00:00.000', N'2013-01-19T00:00:00.000', 
N'2013-01-20T00:00:00.000', N'2013-01-21T00:00:00.000', N'2013-01-22T00:00:00.000', N'2013-01-23T00:00:00.000', 
N'2013-01-24T00:00:00.000', N'2013-01-25T00:00:00.000', N'2013-01-26T00:00:00.000')
GO

刘兄弟 2013-02-26
  • 打赏
  • 举报
回复
我去把每一个表打开了看了看,发现只是把4个表做了分区表。 那我先去测试下试试。然后在去做。

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧