Sqlserver2008删除索引问题
因为用了syncnavigator这个工具导致数据库中每个表都增加了一个IDX_开头的索引以及增加了一列_MASK_FROM_V2现在请教如何批量删除所有表中IDX_开头...
因为用了syncnavigator这个工具导致数据库中每个表都增加了一个 IDX_ 开头的索引以及增加了一列 _MASK_FROM_V2
现在请教如何批量删除 所有表中 IDX_ 开头的索引,然后在批量删除所有表中 _MASK_FROM_V2 的这一列。 展开
现在请教如何批量删除 所有表中 IDX_ 开头的索引,然后在批量删除所有表中 _MASK_FROM_V2 的这一列。 展开
展开全部
请采用下列脚本
/*删除索引*/
declare @table table (keyId int identity,name1 varchar(100),name2 varchar(100))
insert into @table(name1,name2)
select object_name(object_id),name from sys.indexes where name like 'IDX%'
declare @i int
declare @imax int
declare @name1 varchar(100)
declare @name2 varchar(100)
set @i =1
select @imax = max(keyId) from @table t
while @i <=@imax
begin
set @name1 =''
set @name2 =''
select @name1 = name1,@name2=name2 from @table t where t.keyId =@i
print 'drop index ['+@name2 +'] on table ['+@name1+'] '
---exec ('drop index '+@name2 +' on table '+@name1 )
set @i =@i+1
end
go
declare @table table(keyId int identity,name varchar(100))
insert into @table (name) select name from sys.tables where type='u'
/*修理表结构*/
declare @i int
declare @imax int
declare @name varchar(100)
set @i =1
select @imax = max(keyId) from @table t
while @i <=@imax
begin
set @name =''
select @name = name from @table t where t.keyId =@i
print 'alter table ['+@name +'] drop column [_MASK_FROM_V2]'
--exec ('alter table '+@name +' drop column [_MASK_FROM_V2]')
set @i =@i+1
end
分两步操作
1 删除索引
2 修改表结构
有疑问及时沟通。
先在测试机上操作,请采纳!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询