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(50) --文件组名
DECLARE @FStr NVARCHAR(50) --文件名
DECLARE @Size NVARCHAR(50)=‘10MB‘--分区初始化大小,默认为10MB
DECLARE @FileGrowth NVARCHAR(50)=‘100MB‘--分区文件增量 ,默认值为100MB

DECLARE @sql NVARCHAR(max)

--设置下面变量
SET @DataBaseName = ‘BigDBTest‘
SET @TableName = ‘Dim_Date‘
SET @ColumnName = ‘DateKey‘
SET @Location = ‘H:\partion\‘
SET @PStartDay=‘2015-01-01‘
SET @PEndDay=‘2016-02-01‘
SET @FGStr = ‘‘
SET @FStr = ‘‘

DECLARE @Y INT

--1.创建文件组

PRINT ‘--1.创建文件组‘
SET @Y = YEAR(@PStartDay)
WHILE @Y <= YEAR(@PEndDay)
BEGIN
SET @FGStr = @Y
SET @sql = ‘ALTER DATABASE [‘[email protected] +‘] ADD FILEGROUP [FG_‘[email protected]+‘]‘
PRINT @sql + CHAR(13)
SET @Y = @Y+1
END

--2.创建文件

PRINT CHAR(13)+‘--2.创建文件‘
SET @Y = YEAR(@PStartDay)
WHILE @Y <=YEAR(@PEndDay)
BEGIN
SET @[email protected]
SET @[email protected]
SET @sql = ‘ALTER DATABASE [‘[email protected] +‘]
ADD FILE
(NAME = N‘‘FG_‘[email protected]+‘_data‘‘,FILENAME = N‘‘‘[email protected]+‘FG_‘[email protected]+‘_data.ndf‘‘,SIZE = ‘[email protected]+‘, FILEGROWTH = ‘[email protected]+‘ )
TO FILEGROUP [FG_‘[email protected]+‘];‘
PRINT @sql + CHAR(13)
SET @Y = @Y+1
END

--3.创建分区函数
PRINT CHAR(13)+‘--3.创建分区函数‘
DECLARE @FunValueStr NVARCHAR(MAX)=‘‘

SET @Y = YEAR(@PStartDay)
WHILE @Y <YEAR(@PEndDay)
BEGIN
SET @FunValueStr = @FunValueStr +‘‘‘‘+CAST(@Y AS NVARCHAR(4))+‘-01-01‘‘‘+‘,‘
SET @Y = @Y+1
END
SET @FunValueStr = SUBSTRING(@FunValueStr,1,len(@FunValueStr)-1)
SET @sql = ‘CREATE PARTITION FUNCTION
Fun_‘[email protected]+‘(date) AS RANGE RIGHT FOR VALUES(‘[email protected]+‘)‘
PRINT @sql + CHAR(13)

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

SET @Y = YEAR(@PStartDay)
SET @FGStr = ‘‘
WHILE @Y<=YEAR(@PEndDay)
BEGIN
SET @FGStr [email protected]+‘[FG_‘+CAST(@Y AS nvarchar(4))+‘],‘
SET @[email protected]+1
END
SET @FGStr=SUBSTRING(@FGStr,1,len(@FGStr)-1)
SET @sql = ‘CREATE PARTITION SCHEME Sch_‘[email protected]+‘ AS
PARTITION Fun_‘[email protected]+‘
TO(‘[email protected]+‘)‘
PRINT @sql + CHAR(13)

/***************************************************************************************
****************************************************************************************
**其他语句备案
****************************************************************************************
****************************************************************************************/

--1.为表添加分区
SET @sql=‘BEGIN TRANSACTION
CREATE CLUSTERED INDEX PIndex ON [dbo].[‘[email protected]+‘]
(
[‘[email protected]+‘]
)WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON
[Sch_‘[email protected]+‘]([‘[email protected]+‘])

DROP INDEX PIndex ON [dbo].[‘[email protected]+‘]
COMMIT TRANSACTION

print @sql+CHAR(13)

--新增文件组
alter database dbtest add filegroup [FG_2017]
--新增数据文件
alter database dbtest add file (name = N‘FG_2017_data‘,filename=N‘E:\Parctice\DBP\FG_2017_data.nf‘
,size=10MB,Filegrowth=100MB) to filegroup [FG_2017]

--创建分区函数
CREATE PARTITION FUNCTION Fun_DateKey(int) AS RANGE RIght FOR VALUES(20140101,20150101)
--创建分区方案
CREATE PARTITION SCHEME Sch_DateKey AS PARTITION Fun_DateKey TO ([FG_2015],[FG_2016],[FG_2017])

--修改分区函数和方案
alter partition scheme [Sch_FullDateAlternateKey] next used [FG_2017]
alter partition function [Fun_FullDateAlternateKey]() split range(‘2016-01-01‘)

--将分区的数据转移到另外一个表的分区
alter table dbtest.dbo.dimdate switch partition 2 to dbtest.dbo.dimdate_temp partition 2

--查询分区函数、分区方案、边界值的系统视图
select * from sys.partition_functions
select * from sys.partition_range_values
select * from sys.partition_schemes

时间: 2024-12-26 20:25:58

SQL Server分区脚本备份的相关文章

SQL Server分区详解

一.SQL Server分区介绍 在SQL Server中,数据库的所有表和索引都视为已分区表和索引,默认这些表和索引值包含一个分区:也就是说表或索引至少包含一个分区.SQL Server中数据是按水平方式分区,是多行数据映射到单个分区.已经分区的表或者索引,在执行查询或者更新时,将被看作为单个逻辑实体,简单说来利用分区将一个表数据分多个表来存储,对于大数据量的表,将表分成多块查询,若只查询某个分区数据将降低消耗提高效率.需要注意的是单个索引或者表的分区必须位于一个数据库中. 在使用大量数据管理

SQL Server分区详解Partition

一.SQL Server分区介绍 在SQL Server中,数据库的所有表和索引都视为已分区表和索引,默认这些表和索引值包含一个分区:也就是说表或索引至少包含一个分区. SQL Server中数据是按水平方式分区,是多行数据映射到单个分区.已经分区的表或者索引,在执行查询或者更新时,将被看作为单个逻辑实体: 简单说来利用分区将一个表数据分多个表来存储,对于大数据量的表,将表分成多块查询,若只查询某个分区数据将降低消耗提高效率.需要注意的是单个索引或者表的分区必须位于一个数据库中. 在使用大量数据

(二)SQL Server分区创建过程

虽然分区有很多好处(一)SQL Server分区详解Partition,却不能随意使用:且不说分区管理的繁琐,只是跨分区带来的负面影响就需要我们好好分析是否有必要使用分区.一般分区创建的业务特点:用于统计.历史数据少使用.数据自增长.可能数据冗余大.数据量庞大插入量大.在确定是否合适使用分区前,需了解分区是如何创建的,分区的创建包括: 1.新建分区函数 2.新建文件和文件组 3.新建分区架构 4.新建分区表或者分区索引 如下图所示:分区函数定义了分区的具体方式,分区架构使用分区函数和文件组,确定

sql server 分区

 一.分区发展历程      基于表的分区功能为简化分区表的创建和维护过程提供了灵活性和更好的性能.追溯到逻辑分区表和手动分区表的功能. 二.为什么要进行分区 为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性. 大型表除了大小以数百 GB 计算,甚至以 TB 计算的指标外,还可以是无法按照预期方式运行的数据表,运行成本或维护成本超出预定要求.例如发生性能问题.阻塞问题.备份. 三.创建分区实现 在test库 添加四个文件组 1 --第一步:创建四个文件组 2 alter databas

sql server 分区(上)

原文:sql server 分区(上) 分区发展历程      基于表的分区功能为简化分区表的创建和维护过程提供了灵活性和更好的性能.追溯到逻辑分区表和手动分区表的功能. 二.为什么要进行分区 为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性. 大型表除了大小以数百 GB 计算,甚至以 TB 计算的指标外,还可以是无法按照预期方式运行的数据表,运行成本或维护成本超出预定要求.例如发生性能问题.阻塞问题.备份. 三. 分区的概念 分区范围 分区范围是指在要分区的表中,根据业务选择表中的关

nbu8.1配置群集SQL Server实例的备份

1.About SQL Server high availability (HA) environments SQL Server Intelligent policies support the following types of SQL Server HA environments: SQL Server clusters and log-shipping. For log-shipping, the same caveats as for legacy SQL Server polici

Sql Server R2还有备份数据库错误

错误信息描述  该数据库是运行版本10.50.1600的服务器上备份的.该版本与此服务器(运行版本10.00.1600)不兼容.请在支持该被份的服务器上还原该数据,  或者使用与此服务器兼容的备份(MicrosoftSqlServer.Smo) 错误原因  本机上两个数据库一个是sql server版本,另个就sql server r2版本.  数据备份文件应该在sql server r2版本上附加而,我的sql server r2版本登陆所用的实例是sql server版本的所以引发数据还原不

通过作业调度建立SQL Server的自动备份

SQL Server的作业调度来建立自动备份的方法 ◆1.进入企业管理器中->管理->sql server代理->作业; ◆2.新建作业,作业名称随便取,例如:data备份,所有者选择sa,当然你也可以选择其他用户,前提是该用户有执行作业的权限; ◆3.点击步骤标签,进入步骤面板.新建步骤,步骤名可以随便填写,如步骤1,类型和数据库默认,不需要修改.命令中写入以下语句: BACKUP DATABASE [数据库名] TO DISK = N''F:data数据库备份'' WITH NOIN

对 sql server 数据库的备份进行加密

原文:对 sql server 数据库的备份进行加密 嗯,最近在研究数据库备份相关的东西,考虑到应该为数据库备份加个密,就准备从网上搜索一下看看有什么好办法,没想到还挺乱... 首先,我从网上搜到的,对数据库备份加密的方法,主要有三种:   1.在使用 BACKUP 语句时,添加 PASSWORD 参数[此方法适用于 sql server 2012 以前的版本(不包含 2012)] 不过呢,其实这个 PASSWORD 参数的加密,并不是我们想象中的对数据完整的加密. 根据 MSDN 中的介绍:h