回答

收藏

如何使用一个命令删除SQL数据库中的所有索引?

技术问答 技术问答 265 人阅读 | 0 人回复 | 2023-09-14

那么,如何用一个命令删除SQL数据库中的所有索引?我有此命令可以使我获得全部20条左右的drop语句,但是如何从此“结果集”运行所有这些drop语句?
: C- ]; |- f, Q! ~; G4 _! Q6 {select * from vw_drop_idnex;: d1 h7 |& S. ]0 @9 r$ Q1 h
给我相同列表的另一个变体是:
! p5 P- U6 f2 Y$ ySELECT  'DROP INDEX ' + ix.Name + ' ON ' + OBJECT_NAME(ID)  AS QUERYLIST$ E$ W" f4 s& |
FROM  sysindexes ix' H. I- G" k0 g. v7 u( Z
WHERE   ix.Name IS NOT null and ix.Name like '%pre_%'
" X/ d$ q4 J% q  M我试图做“ exec(从vw_drop_idnex中选择cmd)”,但是它没有用。我正在寻找一种类似于for循环并逐一运行查询的东西。3 u7 h( x, a5 a3 N: K" t* [
-----------------------
: d3 e9 _9 ?$ _; v在Rob Farleys的帮助下,脚本的最终草案为:/ K( t8 }8 N) X* e. x0 |+ J  r
declare @ltr nvarchar(1024);
; Y, F* l- T; L- P# F( SSELECT @ltr = ( select 'alter table '+o.name+' drop constraint '+i.name+';'
2 L9 P6 e. V* m3 l' ~# t  from sys.indexes i join sys.objects o on  i.object_id=o.object_id
( |8 B# {  O8 n" I9 B  where o.type'S' and is_primary_key=1. z& @' i9 ^4 |! ~7 {; b" ^: ]
  FOR xml path('') );
4 h' w" |# c  d4 {! D. M6 ?( Gexec sp_executesql @ltr;* G! ^! _, [2 n
declare @qry nvarchar(1024);
7 W! h$ L: k8 z( y* P/ ^6 T0 _select @qry = (select 'drop index '+o.name+'.'+i.name+';'
' a5 O% p; A- k2 g: M  h  from sys.indexes i join sys.objects o on  i.object_id=o.object_id4 E) ?# h$ I7 ~& v( {
  where o.type'S' and is_primary_key1 and index_id>0
% S1 D0 m( V2 v' c/ `% |7 c; X! Pfor xml path(''));
% T) q% s6 a2 ^9 hexec sp_executesql @qry
# p$ Z& I! F6 l- ?  D. J               
/ q: f9 p' {2 T# p解决方案:; s, i& F: Q  d% d& B& [
                " g- y" T) L; e" m" t! I: t" x
, e, |6 B4 _0 A! Q6 r0 O5 f
6 V) j& g4 {( m5 w$ E" A5 A7 n6 C$ V7 \
                你很亲密
% b2 M1 ]! i& z( gdeclare @qry nvarchar(max);1 l( R% P0 r3 p: @) G# z
select @qry = & ^! i1 ^$ I8 X+ l2 ?, X
(SELECT  'DROP INDEX [' + ix.name + '] ON ' + OBJECT_NAME(ID) + '; '- u+ H3 g& O. ^! T# @1 U0 }
FROM  sysindexes ix
: @/ C8 z* Q  u, n  zWHERE   ix.Name IS NOT null and ix.Name like '%prefix_%'
% i/ r  k: a3 C# Xfor xml path(''));
9 {" s# w- N. H7 J1 nexec sp_executesql @qry
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则