分区表的问题 80feixianxxx]

发布时间:2014-1-1 0:09:51编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"分区表的问题 80feixianxxx]",主要涉及到分区表的问题 80feixianxxx]方面的内容,对于分区表的问题 80feixianxxx]感兴趣的同学可以参考一下。

我建好了分区表,有n个文件组(每年新建立一个),程序里面原来取数据的sql方法不需要修改,但取出来的数据要求是最后一个分区中存储的数据,请问有没有什么不修改原来取数据的sql语句但却能实现要求的办法,(例如可以安全的移出前几个文件组中的ndf等(好像不行))。谢谢啦!急等啊。

怎么没人顶啊!?

mark~~~

好像没法控制吧

表中有没有创建日期这样的字段啊?可以按日期来查

不明LZ在说什么

支持搂主,收藏

先SWITCH数据,再移除分区

一般来说是要在where语句里加上分区条件来定位到某个分区的,如果一定要不修改sql语句的话,试试看用试图!

建议楼主了解分区表的概念作用。

这是我学习分区表应用例子: 引用联机帮助的说明:       通过对表或索引进行分区,快速有效地移动数据子集。       如果需要定期向已分区表添加新数据以及从同一已分区表中删除旧数据,可以使用这些方案。此操作会涉及各种方案中的大量或少量数据。如果必须加载、清除或转换要添加的新数据,则在将新数据作为分区添加之前可以将其视为独立的实体。可以将旧数据存档或存入数据仓库。无论集合有多大,都能快速有效地进行传输,因为并不以物理方式移动数据,这与 INSERT INTO SELECT FROM 语句不同。只有关于存储位置的元数据会从一个分区变为另一个分区。        在我们实际中,可以应用于出粮系统,考勤系统,已处理订单系统等。插入当月数据的时候,需要把上月的数据放到历史的数据表中,使用表分区方法就很好的能实现。 Use test go If Object_id('Duty') Is Not null      Drop Table Duty Go If Object_id('DutyHistory') Is Not null      Drop Table DutyHistory Go If Exists(Select 1 From sys.partition_schemes Where name='MyPS1')     Drop Partition scheme MyPS1 Go If Exists(Select 1 From sys.partition_functions Where name='MyPF1')     Drop Partition Function MyPF1 Go --建立分区函数 Create Partition Function MyPF1(datetime) As Range Left For Values('2007/12/31') Go --建立分区方案 Create Partition Scheme MyPS1 As Partition MyPF1 To ([Primary],[Primary]) Go /* 1,建立分区函数,分区方案是有先后顺序的。 2,分区函数提供的值的数目n,不能超过 999。所创建的分区数等于 n + 1 */ Go --建立测试表 Create Table Duty(         id int Identity(1,1) Not Null,         Name nvarchar(50),         WorkDate datetime,         WorkHours numeric(5,1),         Constraint PK_Duty Primary Key Clustered(id Asc,WorkDate Asc) On MyPS1(WorkDate) ) On MyPS1(WorkDate) Go Create Table DutyHistory(         id int Identity(1,1) Not Null,         Name nvarchar(50),         WorkDate datetime,         WorkHours numeric(5,1),         Constraint PK_DutyHistory Primary Key Clustered(id Asc,WorkDate Asc) On MyPS1(WorkDate) ) On MyPS1(WorkDate) --这里就是用到了表分区方案。 Go --插入2008/1一个月的数据 Declare          @MaxRows int,         @StartDate datetime Select      @MaxRows=31,     @StartDate='2007/12/31'      ;With  a0 as(Select id=1 Union All Select id=1), a1 as(Select id=a.id From a0 a,a0 b), a2 as(Select id=a.id From a1 a,a1 b), a3 as(Select id=a.id From a2 a,a2 b), a4 as(Select id=a.id From a3 a,a3 b), a5 as(Select id=a.id From a4 a,a4 b), Row as(Select id=Row_number() Over(Order By id) From a5) Insert Into Duty      ([name],WorkDate,WorkHours) Select 'Robert',@StartDate+id,Rand()*6 From Row Where id<[email protected] /* --debug 查询两表的分区情况 Select * from sys.partitions  Where object_id In(Select object_id From sys.tables Where name In('Duty','DutyHistory')) */ Go --切换分区前 Select * From Duty Select * From DutyHistory --切换分区 Duty -->DutyHistory  Alter Table Duty Switch Partition 2 To DutyHistory Partition 2 --切换分区后 Select * From Duty Select * From DutyHistory Go --修改分区函数,分区方案,方便下个月切换分区 --1.把>2007/12/31的分区拆分为两个分区 Alter Partition Scheme MyPS1  Next Used [Primary]  Go Alter Partition Function MyPF1() Split Range('2008/1/31')  Go --2.把<2008/1/31的两个分区合并 Alter Partition Function MyPF1() Merge Range('2007/12/31')  Go --插入2月份数据 Declare          @MaxRows int,         @StartDate datetime Select      @MaxRows=29,     @StartDate='2008/1/31'      ;With  a0 as(Select id=1 Union All Select id=1), a1 as(Select id=a.id From a0 a,a0 b), a2 as(Select id=a.id From a1 a,a1 b), a3 as(Select id=a.id From a2 a,a2 b), a4 as(Select id=a.id From a3 a,a3 b), a5 as(Select id=a.id From a4 a,a4 b), Row as(Select id=Row_number() Over(Order By id) From a5) Insert Into Duty      ([name],WorkDate,WorkHours) Select 'Robert',@StartDate+id,Rand()*6 From Row Where id<[email protected] Go --切换分区前 Select * From Duty Select * From DutyHistory --切换分区 Duty -->DutyHistory  Alter Table Duty Switch Partition 2 To DutyHistory Partition 2 --切换分区后 Select * From Duty Select * From DutyHistory my blog: http://www.cnblogs.com/wghao/archive/2008/05/28/1208813.html


上一篇:SQL Server数据库中交易日志的维护 0feixianxxx]
下一篇:sql日志命令 20zemin6786101]

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款