Solved

HOW TO ALTER  PARTITION FUNCTION IN SQL SERVER 2005?

Posted on 2009-07-12
10
650 Views
Last Modified: 2012-05-07
I need to alter the data partition function which has the date range of one month each(3 partitions). I need to change them to contain 2 months of data instead  on each partition. What is the best approach on doing this?
0
Comment
Question by:venk_r
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 4
10 Comments
 
LVL 57

Expert Comment

by:Raja Jegan R
ID: 24836735
Below query will give you the Merge statements that needs to be executed.
Hope this helps
select 'alter partition function ur_partition_fn_name () merge range (' + t1.value + ')'
from (
select t1.value, row_number() over ( order by t1.value) rnum
from sys.partition_range_values t1, sys.partition_functions t2
where t1.function_id = t2.function_id
and t2.name = 'ur_partition_fn_name' ) temp
where rnum = 1

Open in new window

0
 
LVL 8

Author Comment

by:venk_r
ID: 24836781
Iam getting the below error when I execute this
The multi-part identifier "t1.value" could not be bound.

0
 
LVL 57

Expert Comment

by:Raja Jegan R
ID: 24836786
Oops.. Small syntax mistake.
Kindly try this one out
select 'alter partition function ur_partition_fn_name () merge range (' + value + ')'
from (
select t1.value, row_number() over ( order by t1.value) rnum
from sys.partition_range_values t1, sys.partition_functions t2
where t1.function_id = t2.function_id
and t2.name = 'ur_partition_fn_name' ) temp
where rnum = 1

Open in new window

0
Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

 
LVL 8

Author Comment

by:venk_r
ID: 24836796
This time I get one more exception
Msg 402, Level 16, State 1, Line 1
The data types varchar and sql_variant are incompatible in the add operator.
0
 
LVL 57

Expert Comment

by:Raja Jegan R
ID: 24836797
Currently you have only 3 partitions and you can manually merge the second partition.

alter partition function ur_partition_fn_name () merge range ( ur_second_partition_val)

Kindly replace ur_partition_fn_name and ur_second_partition_val to get this work out now.

Anyhow this script will be helpful to you when you have several partitions with you.
0
 
LVL 57

Expert Comment

by:Raja Jegan R
ID: 24836811
Try this one out..

Dont have access to Server now and hence haven't checked out for syntax.
Kindly revert if any error comes again.
select 'alter partition function ur_partition_fn_name () merge range (''' + convert(varchar(10), value, 101) + ''')'
from (
select t1.value, row_number() over ( order by t1.value) rnum
from sys.partition_range_values t1, sys.partition_functions t2
where t1.function_id = t2.function_id
and t2.name = 'ur_partition_fn_name' ) temp
where rnum = 2

Open in new window

0
 
LVL 8

Author Comment

by:venk_r
ID: 24836818
Actually I have 4 left date range partition
CREATE PARTITION FUNCTION Trackpartitionfn(datetime)
AS RANGE LEFT FOR VALUES

('20090108 23:59:59.997',
'20090208 23:59:59.997',
'20090308 23:59:59.997',
'20090408 23:59:59.997')

And I want to create 2 months per partition now which would like
CREATE PARTITION FUNCTION Trackpartitionfn(datetime)
AS RANGE LEFT FOR VALUES
(
'20090308 23:59:59.997',
'20090508 23:59:59.997',
'20090708 23:59:59.997',
'20090708 23:59:59.997')

How would I use merge to achieve this.?
0
 
LVL 8

Author Comment

by:venk_r
ID: 24836839
Do I need to destroy the whole partition and create it from scratch with new boundaries?
0
 
LVL 57

Expert Comment

by:Raja Jegan R
ID: 24836840
The script which I provided earlier would help you to achieve something like this

CREATE PARTITION FUNCTION Trackpartitionfn(datetime)
AS RANGE LEFT FOR VALUES

('20090108 23:59:59.997',
'20090308 23:59:59.997')

To add new more partitions you have to use SPLIT function as given below:

alter partition function Trackpartitionfn () split range ( '20090508 23:59:59.997');
alter partition scheme ur_partition_scheme NEXT USED [primary];
alter partition function Trackpartitionfn () split range ( '20090708 23:59:59.997');
alter partition scheme ur_partition_scheme NEXT USED [primary];
alter partition function Trackpartitionfn () split range ( '20090908 23:59:59.997');
alter partition scheme ur_partition_scheme NEXT USED [primary];

you have to replace ur_partition_scheme with your partition scheme name and primary with filegroup name if you have used other than primary.

Hope this helps
0
 
LVL 57

Accepted Solution

by:
Raja Jegan R earned 500 total points
ID: 24836845
>> Do I need to destroy the whole partition and create it from scratch with new boundaries?

Not necessary.. You can continue using the existing partition along with appropriate SPLIT and MERGE functions to obtain the necessary changes.
0

Featured Post

Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Introduction SQL Server Integration Services can read XML files, that’s known by every BI developer.  (If you didn’t, don’t worry, I’m aiming this article at newcomers as well.) But how far can you go?  When does the XML Source component become …
Ever wondered why sometimes your SQL Server is slow or unresponsive with connections spiking up but by the time you go in, all is well? The following article will show you how to install and configure a SQL job that will send you email alerts includ…
Using examples as well as descriptions, and references to Books Online, show the documentation available for datatypes, explain the available data types and show how data can be passed into and out of variables.
Viewers will learn how the fundamental information of how to create a table.

740 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question