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

本文转自: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(50), @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‘[email protected]
    set @ndfName=N‘F‘[email protected]+‘‘
    set @fullPath=N‘D:\\Program Files\\Microsoft SQL Server\\MSSQL10.MSSQLSERVER\\MSSQL\\DATA\\‘[email protected]+‘.ndf‘

    --此处该为自己的数据文件路径,lui注释2015-5-4(右击服务器-属性-数据库设置可看到)
    set @partFunName=N‘pf_Time‘
    set @schemeName=N‘ps_Time‘
    --创建文件组
    if exists(select * from sys.filegroups where [email protected])
    begin
    print ‘文件组存在,不需添加‘
    end
    else
    begin
    exec(‘ALTER DATABASE ‘[email protected]+‘ ADD FILEGROUP [‘[email protected]+‘]‘)
    print ‘新增文件组‘
    if exists(select * from sys.partition_schemes where name [email protected])
    begin
    exec(‘alter partition scheme ‘[email protected]+‘ next used [‘[email protected]+‘]‘)
    print ‘修改分区方案‘
    end
    if exists(select * from sys.partition_range_values where function_id=(select function_id from
    sys.partition_functions where name [email protected]) and [email protected])
    begin
    exec(‘alter partition function ‘[email protected]+‘() split range(‘‘‘[email protected]+‘‘‘)‘)
    print ‘修改分区函数‘
    end
    end
    --创建NDF文件
    if exists(select * from sys.database_files where [state]=0 and ([email protected] or [email protected]))
    begin
    print ‘ndf文件存在,不需添加‘
    end
    else
    begin
    exec(‘ALTER DATABASE ‘[email protected]+‘ ADD FILE (NAME =‘[email protected]+‘,FILENAME = ‘‘‘[email protected]+‘‘‘)TO FILEGROUP [‘[email protected]+‘]‘)
    print ‘新创建ndf文件‘
    end
    /*--------------------以上创建数据库的文件组和物理文件------------------------*/
    --分区函数
    if exists(select * from sys.partition_functions where name [email protected])
    begin
    print ‘此处修改需要在修改分区函数之前执行‘
    end
    else
    begin
    exec(‘CREATE PARTITION FUNCTION ‘[email protected]+‘(DateTime)AS RANGE RIGHT FOR VALUES (‘‘‘[email protected]
    +‘‘‘)‘)
    print ‘新创建分区函数‘
    end
    --分区方案
    if exists(select * from sys.partition_schemes where name [email protected])
    begin
    print ‘此处修改需要在修改分区方案之前执行‘
    end
    else
    begin
    exec(‘CREATE PARTITION SCHEME ‘[email protected]+‘ AS PARTITION ‘[email protected]+‘ TO
    (‘‘PRIMARY‘‘,‘‘‘[email protected]+‘‘‘)‘)
    print ‘新创建分区方案‘
    end
    print ‘---------------以下是变量定义值显示---------------------‘
    print ‘当前数据库:‘[email protected]
    print ‘当前日期:‘[email protected]+‘(用作随机生成的各种名称和分区界限)‘
    print ‘合法命名方式:‘[email protected]
    print ‘文件组名称:‘[email protected]
    print ‘ndf物理文件名称:‘[email protected]
    print ‘物理文件完整路径:‘[email protected]
    print ‘分区函数:‘[email protected]
    print ‘分区方案:‘[email protected]
    /*
    --查看创建的分区函数
    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型或其他类型的字段进行分区,选择下一步,使用现有分区函数下一步使用现有分区方案,下一步会自动按照分区方案执行的日期进行分区,继续点击下一步选择立即执行,完成后即可完成的整体的表分区自动执行.

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

时间: 2024-12-25 19:00:42

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

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

Oracle11g通过间隔分区实现按月创建表分区 在项目数据库设计过程中由于单表的数据量非常庞大,需要对表进行分区处理.由于表中的数据是历史交易,故按月分区,提升查询和管理. 由于之前对于表分区了解不多,为了实现上述功能查了很多资料,一开始的方向是通过Crontab调用Shell脚本来按月自动创建分区,或者使用Oracle的Job调用存储过程来自动创建分区.在研究上述两套方案的过程中,无意发现Oracle11g有间隔分区功能,对于使用Range分区的可以按年,月,日来自动生成分区.语法如下: ?

打造android ORM框架opendroid(二)——自动创建数据库

在上一篇博客<打造android ORM框架opendroid(一)--ORM框架的使用>中相信你已经了解了opendroid的使用,那么从这篇博客开始,我们正式进入opendroid的源码分析,打造一款自己的ORM框架! 在正式开始之前,你需要保证手里有一份opendroid的源码,如果还没下载opendroid,请到http://git.oschina.net/qibin/OpenDroid 下载opendroid的源码. 任何数据库操作都是从创建数据库开始的,今天我们就来看看opendr

Hibernate/JPA 自动创建数据库(MySQL)

平时使用Hibernate/JPA映射MySQL时,经常使用到自动创建数据表操作,自动创建MySQL数据库比较少见. 实际上也可以同时创建数据库,修改一下连接配置即可. 常见的配置如下(以Spring Boot中配置方式为例): spring.datasource.url=jdbc:mysql://localhost:3306/dbname?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false

EF CodeFirst 如何通过配置自动创建数据库&lt;当模型改变时&gt;

最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    本篇为进阶篇,也是弥补自己之前没搞明白的地方,惭愧惭愧. 如有不明白,请参考:EF CodeFirst 创建数据库 及 EF CodeFirst增删改查之'CRUD' 话不多说,直接上代码: using System; using System.Collections.Generic; using System.Linq; using System

EntityFrameworkCore 根据实体类自动创建数据库

1.首先新建 Asp.Net Core WebApi 项目 2.添加一下引用 : 2.1   Pomelo.EntityFrameworkCore.MySql(我用的Mysql 根据自己情况引用就行) 2.2  Microsoft.EntityFrameworkCore 2.3 Microsoft.EntityFrameworkCore.Design 3.使项目支持dotnet ef 工具以使用Migrations 3.1 手动修改csproj文件(手动添加是因为在nuget添加Microsof

一键自动创建磁盘分区以及格式化挂载脚本

说明: 1.默认分3个区,其中一个是SWAP分区 2.分区的大小没有写成交互式,直接定义在脚本,需要在脚本修改 3.只是演示测试,sda磁盘没有设置自动分区功能,可把sdb分区代码拷贝到sda位置即可 4.分区前会把分区磁盘的分区表先重置,请提前做好数据备份!! #!/bin/bash #Author: Hill.Mai #Contact: [email protected] #Create time: 2016-08-31 08:43:29 #Description:auto disks pa

自动创建数据库(DELPHI+SQL SERVER)

procedure TForm1.Btn_OKClick(Sender: TObject); var sqlconn:string; begin Sqlconn:='Provider=SQLOLEDB.1;'+'password='+Edit_Password.Text +';Persist Security Info=true;User ID='+Edit_Name.Text +';Data Source='+Edit_Server.Text; if Edit_Server.Text=Empt

让Entity Framework不再私闯sys.databases 不自动创建数据库(转载)

原文:http://www.cnblogs.com/dudu/archive/2011/12/27/entity_framework_sys_databases.html 这里的"私闯sys.databases"是指Entity Framework默认发起的查询:SELECT Count(*) FROM sys.databases WHERE [name]=N'数据库名' 注:本文针对的是Entity Framework Code First场景,Entity Framework的版本

Oracle 11g 新特性:自动创建分区(Interval Partition)

分区(Partition)一直是Oracle数据库引以为傲的一项技术,正是分区的存在让Oracle高效的处理海量数据成为可能,在Oracle 11g中,分区技术在易用性和可扩展性上再次得到了增强.在10g的Oracle版本中,要对分区表做调整,尤其是对RANGE分区添加新的分区都需要DBA手动定期添加,或都使用存储过程进行管理.在11G的版本中的Interval Partition不再需要DBA去干预新分区的添加,Oracle会自动去执行这样的操作,减少了DBA的工作量.Interval Par