根据条件进行分区的语句

来源:互联网 发布:安装linux系统 编辑:程序博客网 时间:2024/06/05 22:45

set nocount on
declare @tbname varchar(100)='OrderFlow.[ORDER]'
declare @partcol varchar(100)='CreateTime'
declare @schname varchar(100)='PSCH_Working'
declare @PKname varchar(100),@cols varchar(1000),@sql varchar(8000),@tbl varchar(100)
select @PKname=name from sys.objects
where type ='PK' and parent_object_id =object_id
(@tbname)

--select * from sys.indexes where  object_id=
(select @tbl=name from sys.objects
where object_id =object_id
(@tbname)
)
--select @tbl
select @cols=STUFF((
select
',['+c.name+'] '+(case when b.is_descending_key =1 then 'desc' else 'asc'end) from sys.indexes a inner join sys.index_columns b
on a.index_id=b.index_id and a.object_id=b.object_id
and  a.name=@PKname
inner join sys.all_columns c
on b.object_id=c.object_id and b.column_id=c.column_id
for xml path('')
),1,1,'')
--select @cols

set @sql='

ALTER TABLE '+@tbname+' DROP CONSTRAINT ['+@PKname+']

ALTER TABLE '+@tbname+' ADD  CONSTRAINT ['+@PKname+'] PRIMARY KEY NONCLUSTERED
(
 '+@cols+'
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]


CREATE CLUSTERED INDEX [Clust_'+@tbl+'] ON '+@tbname+'
(
 '+@cols+',['+@partcol+'] DESC
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON ['+@schname+'](['+@partcol+'])

'
print @sql

原创粉丝点击