34,593
社区成员
发帖
与我相关
我的任务
分享
if(charindex('Enterprise',@@version)>0 and (day(getdate())=1 or day(getdate())=11 or day(getdate())=21))
BEGIN
declare @filename varchar(100)
declare @adddate DATETIME
set @adddate=getdate()
--添加新的分区,存储最新数据
set @filename = db_name() + '.' + Convert(varchar(10),@adddate,112)
if not exists(select * from sys.database_files where name=@filename)
begin
--添加文件组
set @sql =' Alter database [' + db_name() +'] add filegroup ['+ @filename +']'
exec sp_executesql @sql
--添加文件
declare @filepath varchar(1000)
select top 1 @filepath = filename from sysfiles
set @sql =' Alter database [' + db_name() +'] add file ( name = N'''+ @filename +''', filename = N'''+replace(@filepath,db_name()+'.mdf','') + @filename+'.ndf'' , size = 3072KB , filegrowth= 1024KB ) TO filegroup ['+@filename+']'
exec sp_executesql @sql
--修改分区架构
set @sql =' alter partition scheme partdatescheme next used ['+ @filename +']'
exec sp_executesql @sql
--修改分区函数
set @sql =' alter partition function partdatefunc() split range('''+ Convert(varchar(10),@adddate,121) +''')'
exec sp_executesql @sql
end
end
意思是每月的1号,11号,21号都会去新建一个文件来进行分区。但是现在有个问题,如果我数据库是从老数据库升级上来的。(老数据库是没有进行分区的),就会提示我分区方案与分区函数不存在。(我这里执行的都是修改).