本文转自:http://jingyan.baidu.com/article/6b97984d9a26ec1ca3b0bf77.html

sql2008 计划自动创建数据库分区

固定增量的数据,自动创建分区作业.

步骤一:创建分区的计划任务

  1.  

    打开MsSQL2008,找到作业该项,如果打不开或者SQL Server代理是未启动状态,请先在windows服务中启动SQL Server代理(参考图片),

     
  2.  

    右击MsSQL2008对象资源管理器中的作业,选择新建作业,输入该作业你想用的名称,类别不用管,说明里面是输入一些该作业完成的功能,可不写,请务必勾选已启用复选框.

  3.  

    点击新建作业窗体左侧的步骤项,点击右侧区域下方的新建按钮,输入步骤名称,类型请选择Transact-SQL脚本(T-SQL),运行身份默认,数据库请选择要进行分区的数据库,请不要选择master默认的,命令文本框中输入如下代码:

    /*--------------------创建数据库的文件组和物理文件------------------------*/

    declare @tableName varchar(50), @fileGroupName varchar(50), @ndfName varchar(50), @newNameStr varchar(50), @fullPath

    varchar(250), @newDay varchar(50), @oldDay datetime, @partFunName varchar(50), @schemeName varchar(50)
    set @tableName='WaterNet_DaFeng'
    set @newDay=CONVERT(varchar(100), GETDATE(), 23)--23:按天 114:按时间
    set @oldDay=cast(CONVERT(varchar(10),dateadd(day,-1,getdate()), 120 ) as datetime)
    set @newNameStr=Replace(Replace(@newDay,':','_'),'-','_')
    set @fileGroupName=N'G'+@newNameStr
    set @ndfName=N'F'+@newNameStr+''
    set @fullPath=N'D:\\Program Files\\Microsoft SQL Server\\MSSQL10.MSSQLSERVER\\MSSQL\\DATA\\'+@ndfName+'.ndf'

    --此处该为自己的数据文件路径,lui注释2015-5-4(右击服务器-属性-数据库设置可看到)
    set @partFunName=N'pf_Time'
    set @schemeName=N'ps_Time'
    --创建文件组
    if exists(select * from sys.filegroups where name=@fileGroupName)
    begin
    print '文件组存在,不需添加'
    end
    else
    begin
    exec('ALTER DATABASE '+@tableName+' ADD FILEGROUP ['+@fileGroupName+']')
    print '新增文件组'
    if exists(select * from sys.partition_schemes where name =@schemeName)
    begin
    exec('alter partition scheme '+@schemeName+' next used ['+@fileGroupName+']')
    print '修改分区方案'
    end
    if exists(select * from sys.partition_range_values where function_id=(select function_id from
    sys.partition_functions where name =@partFunName) )

    --and value=@oldDay   如果上次没做成功,则会导致以后都不会建立边界,所以屏蔽  2016-10-18 by lui
    begin
    exec('alter partition function '+@partFunName+'() split range('''+@newDay+''')')
    print '修改分区函数'
    end
    end
    --创建NDF文件
    if exists(select * from sys.database_files where [state]=0 and (name=@ndfName or physical_name=@fullPath))
    begin
    print 'ndf文件存在,不需添加'
    end
    else
    begin
    exec('ALTER DATABASE '+@tableName+' ADD FILE (NAME ='+@ndfName+',FILENAME = '''+@fullPath+''')TO FILEGROUP ['+@fileGroupName+']')
    print '新创建ndf文件'
    end
    /*--------------------以上创建数据库的文件组和物理文件------------------------*/
    --分区函数
    if exists(select * from sys.partition_functions where name =@partFunName)
    begin
    print '此处修改需要在修改分区函数之前执行'
    end
    else
    begin
    exec('CREATE PARTITION FUNCTION '+@partFunName+'(DateTime)AS RANGE RIGHT FOR VALUES ('''+@newDay
    +''')')
    print '新创建分区函数'
    end
    --分区方案
    if exists(select * from sys.partition_schemes where name =@schemeName)
    begin
    print '此处修改需要在修改分区方案之前执行'
    end
    else
    begin
    exec('CREATE PARTITION SCHEME '+@schemeName+' AS PARTITION '+@partFunName+' TO
    (''PRIMARY'','''+@fileGroupName+''')')
    print '新创建分区方案'
    end
    print '---------------以下是变量定义值显示---------------------'
    print '当前数据库:'+@tableName
    print '当前日期:'+@newDay+'(用作随机生成的各种名称和分区界限)'
    print '合法命名方式:'+@newNameStr
    print '文件组名称:'+@fileGroupName
    print 'ndf物理文件名称:'+@ndfName
    print '物理文件完整路径:'+@fullPath
    print '分区函数:'+@partFunName
    print '分区方案:'+@schemeName
    /*
    --查看创建的分区函数
    select * from sys.partition_functions
    --查看分区函数的临界值
    select * from sys.partition_range_values
    --查询分区方案
    select * from sys.partition_schemes
    --查询表数据在哪个分区中存储,where条件查询第一个分区中存在的数据
    select *,$partition.pf_SaveTime(分区字段) as Patition from 表名 where $partition.pf_SaveTime(分区字段)=1
    */

    GO

    点击确定按钮

    上述代码中的变量名称,路径等均可自行修改,上述是按天为单位,以G开头的日期作为文件组名称,以F开头的日期作为物理分区文件名即ndf文件名称

  4.  

    选择新建分区左侧的计划项,然后点击右侧区域下方的新建按钮,设定新建分区的时间间隔,图中设置的是每天创建一个新的分区,用户也可以自行修改,按月,按周,按自定义时间等

    其他的条目,通知,警报,目标可自行设置,也可不设置,至此自动创建分区的计划任务已成功设置.

    END

步骤二:对表应用分区方案和分区函数

  1.  

    右击要分区的表,选择存储菜单下的创建分区,上述步骤一中创建的分区函数是按datetime类型进行的分区,所以创建分区的时候需要选择相应类型的字段作为分区依据,用户也可以根据int型或其他类型的字段进行分区,选择下一步,使用现有分区函数下一步使用现有分区方案,下一步会自动按照分区方案执行的日期进行分区,继续点击下一步选择立即执行,完成后即可完成的整体的表分区自动执行.

    需注意:刚设置完第一步的计划任务,可能不会执行第一步的分区方案的代码,也就意味着没有创建分区函数和分区方案,第二步设置的时候使用现有分区函数和使用现有分区方案也就不可用,可先把第一步的代码执行一遍即可.

     
     
     
     

sql2008 计划自动创建数据库分区【转】的更多相关文章

  1. oracle11g interval(numtoyminterval())自动创建表分区

    Oracle11g通过间隔分区实现按月创建表分区 在项目数据库设计过程中由于单表的数据量非常庞大,需要对表进行分区处理.由于表中的数据是历史交易,故按月分区,提升查询和管理. 由于之前对于表分区了解不 ...

  2. EntityFramework SQLiteCodeFirst 自动创建数据库 关闭级联删除

    外键的级联删除: 如A表中有主键idA, B表中设置外键(ForeignKey)为A表中的主键idA, 当A表中的记录被删除时, B表中所有引用此条记录的记录(即所有外键为idA的记录)将自动被删除 ...

  3. SpringBoot使用Hibernate,实现自动创建数据库表【博客数据库设计】

    我们准备设计博客,那就要设计数据库. 我们可以使用Hibernate来自动生成数据库. 博客数据库的结构: 实体类: 博客 Blog 博客分类 Type 博客标签 Tag 博客评论 Comment 用 ...

  4. EF自动创建数据库步骤之三(自定义数据库初始器)

    EF自动创建数据库需要我们告诉数据库如何进行初始化:如创建表后是否需要插入一些基础数据,是否 需要创建存储过程.触发器等.还有就是EF有三种初始化方式(参见下面三个类): DropCreateData ...

  5. EF自动创建数据库步骤之一(实体类写法)

    文章演示使用EF自动创建数据库第一个步骤创建实体类. 一.创建表映射实体类 using System; using System.Collections.Generic; using System.C ...

  6. 企业项目实战 .Net Core + Vue/Angular 分库分表日志系统五 | 完善业务自动创建数据库

    教程预览 01 | 前言 02 | 简单的分库分表设计 03 | 控制反转搭配简单业务 04 | 强化设计方案 05 | 完善业务自动创建数据库 说明 这节来把基础的业务部分完善一下. 因为 IQue ...

  7. EF CodeFirst 如何通过配置自动创建数据库<当模型改变时>

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    本篇为进阶篇,也是弥补自己之前没搞明白的地方,惭愧 ...

  8. oracle自动创建表分区

    创建一个table,记录哪些表需要创建表分区 create table STAT_TABLE ( tablename VARCHAR2(), pre_partition_name VARCHAR2() ...

  9. EF自动创建数据库步骤之二(继承DbContext类)

    创建好表实体类后,接着就是创建数据库上下文(继承DbContext)并将实体类添加进来. 代码示例如下: using DBClientEntity; using System; using Syste ...

随机推荐

  1. 实现类似微信的延迟加载的Fragment——LazyFragment

    参考微信,使用ViewPager来显示不同的tab,每个tab是一个Fragment, 假设有3个tab,对应的fragment是FragmentA.FragmentB.FragmentC 需要实现的 ...

  2. sql server实用工具sql prompt的安装与注册

    说起 sql prompt ,相信一直在sql server 领域摸爬滚打的技术人员们,并不陌生. 它是一款拥有SQL智能提示功能的SQL ServerVS插件.SQL Prompt能根据数据库的对象 ...

  3. vSphere存储

    write by xiaoyang 配置iSCSI外部存储 1.      选择配置——硬件——存储 2.      在存储适配器里选择添加软件iSCSI适配器 3.      确认添加 4.     ...

  4. 将ubuntu14.04设置为文本模式启动?

    修改改GRUB 的配置文件(不建议直接改 grub.conf) $sudo vim /etc/default/grub 找到: GRUB_CMDLINE_LINUX_DEFAULT="qui ...

  5. 【学习笔记】【C语言】sizeof

    1.用来计算一个变量或者一个常量.一种数据类型所占的内存字节数. 2.sizeof一共有3种形式 1>sizeof( 变量\常量 ) sizeof(10); char c = 'a'; size ...

  6. 转: 理解Python的With语句

    Python’s with statement provides a very convenient way of dealing with the situation where you have ...

  7. websphere中由于实际应用没有卸载干净,导致安装不了。以下是完全卸载应用程序的方法

     出现此问题的原因之一:操作界面上没有卸载完成.进行一下操作:1.删除 $WAS_HOME/profiles/AppSrv01/config/cells/...cell/applications下对应 ...

  8. .NET中的标识符、关键字 以及 .NET中的命名规范

    1.关键字 C#定义了一些关键字(public/static/void/class/int/string),这些关键字是构成C#基本语法用的. VS中蓝色字的才是关键字. Main.String.Co ...

  9. 基于WORDPRESS+MYSQL的绿色企业主题制作全过程

    基于WORDPRESS+MYSQL的绿色企业主题制作全过程基于WORDPRESS+MYSQL的绿色企业主题制作全过程基于WORDPRESS+MYSQL的绿色企业主题制作全过程基于WORDPRESS+M ...

  10. xml操作

    一.LINQ to XML 编程基础 1.LINQ to XML类 System.Xml.Linq命名空间含有19个类,下表列出了它们的名称及其描述: 类 描述 XAttribute 表示一个 XML ...