按时间动态生成分区脚本

--生成分区脚本

DECLARE @DataBaseName NVARCHAR(50)--数据库名称

DECLARE @TableName NVARCHAR(50)--表名称

DECLARE @ColumnName NVARCHAR(50)--字段名称

DECLARE @PartNumber INT--需要分多少个区

DECLARE @Location NVARCHAR(50)--保存分区文件的路径

DECLARE @Size NVARCHAR(50)--分区初始化大小

DECLARE @FileGrowth NVARCHAR(50)--分区文件增量

--DECLARE @FunValue INT--分区分段值

DECLARE @i INT

DECLARE @y INT      --起始年份

DECLARE @m INT      --起始月份

DECLARE @d INT      --起始天

DECLARE @dayGap INT --分区分段值 天数

DECLARE @PartNumberStr NVARCHAR(50)

DECLARE @sql NVARCHAR(max)

DECLARE @ValueStart NVARCHAR(50)

--设置下面变量

SET @DataBaseName = ‘HEJIEXUN‘

SET @TableName = ‘DYNAMINE_A_REAL_DATA‘

SET @ColumnName = ‘TIME‘

SET @PartNumber = 500

SET @Location = ‘C:\HejiexunServer\Database\‘

SET @Size = ‘80MB‘

SET @FileGrowth = ‘30%‘

SET @y = 2015

SET @m = 1

SET @d = 1

SET @dayGap = 3

--1.创建文件组

SET @i = 1

PRINT ‘--1.创建文件组‘

WHILE @i <= @PartNumber

BEGIN

SET @PartNumberStr =  RIGHT(‘000‘ + CONVERT(NVARCHAR,@i),4)

SET @sql = ‘ALTER DATABASE [‘[email protected] +‘]

ADD FILEGROUP [FG_‘[email protected]+‘_‘[email protected]+‘_‘[email protected]+‘]‘

PRINT @sql + CHAR(13)

SET @[email protected]+1

END

--2.创建文件

SET @i = 1

PRINT CHAR(13)+‘--2.创建文件‘

WHILE @i <= @PartNumber

BEGIN

SET @PartNumberStr =  RIGHT(‘000‘ + CONVERT(NVARCHAR,@i),4)

SET @sql = ‘ALTER DATABASE [‘[email protected] +‘]

ADD FILE

(NAME = N‘‘FG_‘[email protected]+‘_‘[email protected]+‘_‘[email protected]+‘_data‘‘,FILENAME = N‘‘‘[email protected]+‘FG_‘[email protected]+‘_‘[email protected]+‘_‘[email protected]+‘_data.ndf‘‘,SIZE = ‘[email protected]+‘, FILEGROWTH = ‘[email protected]+‘ )

TO FILEGROUP [FG_‘[email protected]+‘_‘[email protected]+‘_‘[email protected]+‘];‘

PRINT @sql + CHAR(13)

SET @[email protected]+1

END

--3.创建分区函数

PRINT CHAR(13)+‘--3.创建分区函数‘

DECLARE @FunValueStr NVARCHAR(MAX)

--SET @FunValueStr = substring(@FunValueStr,1,len(@FunValueStr)-1)

SET @sql = ‘CREATE PARTITION FUNCTION

Fun_‘[email protected]+‘_‘[email protected]+‘(DATETIME) AS

RANGE RIGHT

FOR VALUES(‘

PRINT @sql

SET @i = 1

SET @FunValueStr = ‘‘

WHILE @i < @PartNumber

BEGIN

SET @FunValueStr = @FunValueStr + ‘‘‘‘ + RIGHT(CONVERT(NVARCHAR, @y),4) + ‘-‘ + RIGHT(‘0‘ + CONVERT(NVARCHAR, @m),2) + ‘-‘ + RIGHT(‘0‘ + CONVERT(NVARCHAR, @d),2) + ‘ 00:00:00.000‘‘,‘

SET @d = @d + @dayGap

IF (@d > 30 OR (@m = 2 AND @d > 28))  --二月需要特殊处理一下

BEGIN

SET @d = 1

SET @m = @m + 1

if (@m > 12)

BEGIN

SET @m = 1

SET @y = @y + 1

END

END

IF (@i = @PartNumber - 1)

BEGIN

SET @FunValueStr = substring(@FunValueStr,1,len(@FunValueStr)-1)

END

PRINT @FunValueStr

SET @FunValueStr = ‘‘

SET @[email protected]+1

END

PRINT ‘)‘ + CHAR(13)

--4.创建分区方案

PRINT CHAR(13)+‘--4.创建分区方案‘

DECLARE @FileGroupStr NVARCHAR(MAX)

--SET @FileGroupStr = substring(@FileGroupStr,1,len(@FileGroupStr)-1)

SET @sql = ‘CREATE PARTITION SCHEME

Sch_‘[email protected]+‘_‘[email protected]+‘ AS

PARTITION Fun_‘[email protected]+‘_‘[email protected]+‘

TO(‘

PRINT @sql

SET @i = 1

SET @FileGroupStr = ‘‘

WHILE @i <= @PartNumber

BEGIN

SET @PartNumberStr =  RIGHT(‘000‘ + CONVERT(NVARCHAR,@i),4)

SET @FileGroupStr = @FileGroupStr + ‘[FG_‘[email protected]+‘_‘[email protected]+‘_‘[email protected]+‘],‘

IF (@i = @PartNumber)

BEGIN

SET @FileGroupStr = substring(@FileGroupStr,1,len(@FileGroupStr)-1)

END

PRINT @FileGroupStr

SET @FileGroupStr = ‘‘

SET @[email protected]+1

END

PRINT ‘)‘

--5.分区函数的记录数

PRINT CHAR(13)+‘--5.分区函数的记录数‘

SET @sql = ‘SELECT $PARTITION.Fun_‘[email protected]+‘_‘[email protected]+‘(‘[email protected]+‘) AS Partition_num,

MIN(‘[email protected]+‘) AS Min_value,MAX(‘[email protected]+‘) AS Max_value,COUNT(1) AS Record_num

FROM dbo.‘[email protected]+‘

GROUP BY $PARTITION.Fun_‘[email protected]+‘_‘[email protected]+‘(‘[email protected]+‘)

ORDER BY $PARTITION.Fun_‘[email protected]+‘_‘[email protected]+‘(‘[email protected]+‘);‘

PRINT @sql + CHAR(13)

时间: 2024-11-03 20:57:59

按时间动态生成分区脚本的相关文章

SSIS动态删除分区

在前面两篇博客中,介绍了动态分区(按照月份)和动态执行分区(每天 执行),但是在实际项目中会有问题:我们分区的CUBE是每天要执行的,但是动态分区每天不会重新生成! 脚本任务中的这段代码,决定了存在的分区将不会执行,造成数据缺失. //如果分区存在将返回false,不在生成分区,如果是3月1号执行的动态生成分区SSIS包,那么以后的3月数据都将加载不进来 if (aMeasureGroup.Partitions.Contains(sPartition)) { Dts.Variables["Use

SQL Server分区脚本备份

--生成分区脚本DECLARE @DataBaseName NVARCHAR(50)--数据库名称DECLARE @TableName NVARCHAR(50)--表名称DECLARE @ColumnName NVARCHAR(50)--字段名称DECLARE @Location NVARCHAR(50)--保存分区文件的路径DECLARE @PStartDay DATE--分区开始时间点DECLARE @PEndDay DATE --分区截止时间点DECLARE @FGStr NVARCHAR

Python 应用闭包思路动态生成unittest执行脚本---分析问题,解决问题,记录填坑。

至于为什么要动态生成unittest执行脚本,以及设计思路,代码阅读参考前文,传送门.好了,本文我们就上一篇文章中的问题做一下分析,记录一下填坑之路吧,这个坑真特么深,挣扎了好久才出来. 首先我们先说一下问题在哪,因为使用了闭包,闭包会绑定变量无法清除无法更改,假如我第一次运行testall函数循环两次,第一次是正常的,第二次运行testall函数循环一次,那么生成的报告就会出现问题,会出现第一次运行的结果.即是:后一次循环运行只要比前一次循环少,那么report一定会出现前一次的结果,必先的b

js动态生成input指定My97DatePicker时间问题

js生成的input指定onclick时间: 以下1.2为错误: onclick="WdatePicker()"; onclick=WdatePicker(); 若指定到window的load方法里面,页面打开就会执行这个方法,但是点击的时候没反应 正确:var inputEle = document.getElementByTagName("input");inputEle.onclick=function(){WdatePicker();} 但是我在google

JQuery中动态生成元素的绑定事件(坑死宝宝了)

今天在做项目的时候,遇到了一个前端的问题,坑了我好长时间没有解决,今天就记录于此,也分享给大家. 问题是这样的,首先看看我的界面,有一个初始印象: 下面是操作列所对应的JS代码: { "data": function (datas) { return "<a data-url='/Device/Edit?id=" + datas.Id + "' data-toggle='modal' class='btn btn-sm btn-default btn

awstats CGI模式下动态生成页面缓慢的改进

本文可以看做是 http://kaifly.blog.51cto.com/3209616/1719248 这篇文章的下篇,在使用过程中发现awstats在cgi模式下动态生成分析报告慢的问题 (尤其是有些站点每天两个多G的日志,查看起来简直是在考验人的耐性),本文分享一种改造这个缺点的思路. 首先再来总结下awstats的处理过程以及查看分析结果的两种方式,来看官方版说明: Process logs: Building/updating statistics database,建立/更新统计数据

SSAS动态添加分区(一)

一.动态分区的好处就不说了,随着时间的推移,不可能一个度量值组都放在一个分区中,处理速度非常慢,如何动态添加分区,如何动态处理分区,成为了很多新手BI工程师一个头痛的问题,废话不多说,分享一下我的经验. 二.首先讲一下大致的流程,主要是通过SSIS进行任务的处理,本文主要是按照月进行分区,当然分区的规则大家可以根据自己的需求制定. 该包用到的所有变量 三.对上面四个步骤分别讲解一下. 1.得到所有分区: ①.主要设置如下图 ②.输出的结果集应该传给变量Partitions ③.SQLStatem

Android OTA升级包制作脚本详解(四,生成升级脚本updater-script)

updater-script简介: updater-script是我们升级时所具体使用到的脚本文件,它主要用以控制升级流程的主要逻辑.具体位置位于更新包中/META-INFO/com/google/android/目录下,在我们制作升级包的时候产生. updater-script生成: 那么升级脚本updater-script是如何产生的呢,我们来看ota_from_target_file中的一条语句,这个之前有过介绍. #在/build/tools/releasetools/目录下的模块edi

动态生成的html添加事件

一.问题描述 用jQuery的append()方法动态添加了一段html代码之后,发现在为新添加的元素绑定click事件时无法获取该新元素. 二.解决方法 度娘推荐的方法基本是用live()方法 live()的官方定义和用法: live() 方法为被选元素附加一个或多个事件处理程序,并规定当这些事件发生时运行的函数.通过 live() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素). live()的详细使用方法可以查看jQuery live() live()和