zoukankan      html  css  js  c++  java
  • SqlServer自动化分区

    1、新增文件组

    ALTER DATABASE [Test] ADD FILEGROUP FG2010
    ALTER DATABASE [Test] ADD FILEGROUP FG2011
    ALTER DATABASE [Test] ADD FILEGROUP FGAll

    2、新增分区文件

    ALTER DATABASE [Test] ADD FILE (NAME='File2010',FILENAME=N'D:Program FilesDataFile2010.ndf') TO FILEGROUP FG2010
    ALTER DATABASE [Test] ADD FILE (NAME='File2011',FILENAME=N'D:Program FilesDataFile2011.ndf') TO FILEGROUP FG2011
    ALTER DATABASE [Test] ADD FILE (NAME='FileAll',FILENAME=N'D:Program FilesDataFileAll.ndf') TO FILEGROUP FGAll

    3、创建分区函数

    --该分区函数创建3个分区(<=2010-01-01、2010-01-01~2011-01-01,>2011-01-01)
    --RANGE LEFT标识边界值在左边

    CREATE PARTITION FUNCTION OrderPartitionFn(datetime)
    AS RANGE LEFT
    FOR VALUES('2010-01-01','2011-01-01')

    4、创建分区方案

    CREATE PARTITION SCHEME OrderPartitionScheme
    AS PARTITION OrderPartitionFn
    TO 
    (
        FG2010,
        FG2011,
        FGAll
    )

    5、创建分区表

    CREATE TABLE OrderRecords
    (
        Id uniqueidentifier,
        CreateTime datetime,
        Total int,
    )
     --OrderPartitionScheme是刚刚定义的分区架构,括号内为指定的分区列
    ON OrderPartitionScheme(CreateTime)

    6、定义执行自动分区操作

    使用sql job 定期执行操作

    DECLARE @maxValue DATETIME,
        @fileGroupName VARCHAR(200),
        @fileNamePath    VARCHAR(200),
        @partitionFnName VARCHAR(200),
        @schemeName VARCHAR(200),
        @fileName   VARCHAR(200),
        @sql        NVARCHAR(1000)
    
    --分区函数
    SET @partitionFnName='OrderPartitionFn';
    --分区方案
    SET @schemeName='OrderPartitionScheme';
    
    --获取当前分区函数最大边界值
    SELECT @MaxValue = Convert(datetime,MAX(value))
    FROM SYS.PARTITION_RANGE_VALUES PRV
    LEFT JOIN SYS.partition_functions fun on prv.function_id=fun.function_id
    WHERE FUN.name=@partitionFnName--分区函数名
    
    SET @fileGroupName='FG'+CONVERT(varchar,(YEAR(@MaxValue)+1))
    
    --D:Program FilesDataFile2016.ndf
    SET @fileNamePath='D:Program FilesDataFile'+ CONVERT(varchar,(YEAR(@MaxValue)+1))+'.ndf'
    --File2016
    SET @fileName=N'File'+ CONVERT(varchar,(YEAR(@MaxValue)+1))
    
    --使用ALTER语句新增一个文件组
    SET @sql='ALTER DATABASE [Test] ADD FILEGROUP '+@fileGroupName
    PRINT @sql
    EXEC(@sql)
    
    SET @sql='ALTER DATABASE [Test] ADD FILE (NAME='''+@fileName+''',FILENAME=N'''+@fileNamePath+''') TO FILEGROUP'+' '+@fileGroupName
    PRINT @sql
    EXEC(@sql)
    --修改分区方案,用一个新的文件组存放下一新增的数据
    SET @sql='ALTER PARTITION SCHEME ['+@schemeName+'] NEXT USED'+' '+@fileGroupName
    PRINT @sql;
    EXEC(@sql)
    
    SET @sql='ALTER PARTITION FUNCTION '+@partitionFnName+'() SPLIT RANGE ('''+Convert(varchar,DATEADD(YEAR,1,@maxValue),120)+''')';
    print @sql;
    EXEC(@sql)
  • 相关阅读:
    echarts labelLayout
    可视化学习及实战记录
    VS2008提示无法打开包括文件:“afxcontrolbars.h”解决办法
    原码、补码和反码
    第一篇
    vc2008编译就提示找不到msvcr90d.dll
    Vue H5 与 APP 交互 (IOS为例)
    VS Code中小程序与Vue常用插件合集(前端合集)
    如何在Element 使用正则表达式校验
    分享CSS公共类库(能在项目快捷使用CSS类)
  • 原文地址:https://www.cnblogs.com/Jabben_Yi/p/5699764.html
Copyright © 2011-2022 走看看