回答

收藏

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

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

那么,如何用一个命令删除SQL数据库中的所有索引?我有此命令可以使我获得全部20条左右的drop语句,但是如何从此“结果集”运行所有这些drop语句?9 T* q0 b; f0 }$ C/ p1 t
select * from vw_drop_idnex;6 M  W. v. I# K4 G4 b/ E; C( b
给我相同列表的另一个变体是:+ X1 Y; S% m& B4 u5 X, {
SELECT  'DROP INDEX ' + ix.Name + ' ON ' + OBJECT_NAME(ID)  AS QUERYLIST
% x2 h( k% ]) j+ R; l. zFROM  sysindexes ix
- Q) v' _& E) B) C: F2 X4 xWHERE   ix.Name IS NOT null and ix.Name like '%pre_%'
* W$ @. |4 w4 k# t! R" A$ Z我试图做“ exec(从vw_drop_idnex中选择cmd)”,但是它没有用。我正在寻找一种类似于for循环并逐一运行查询的东西。* s/ D* F! C# w5 \4 E
-----------------------
+ E( o* m- }' t' R+ \" u3 N在Rob Farleys的帮助下,脚本的最终草案为:
- x2 ~2 h1 Z; R' U1 Hdeclare @ltr nvarchar(1024);8 N' Z+ v0 p4 D2 G2 z* f3 y" ]
SELECT @ltr = ( select 'alter table '+o.name+' drop constraint '+i.name+';'0 F6 ^! F5 |2 a- M7 x/ }: p3 E
  from sys.indexes i join sys.objects o on  i.object_id=o.object_id
  h6 O) o) U3 s5 z. j. s  where o.type'S' and is_primary_key=1
+ }- T6 u: a+ T+ n  FOR xml path('') );# w9 B# X" Z8 S9 Q; ^
exec sp_executesql @ltr;
$ a3 c5 p/ R8 r: z# adeclare @qry nvarchar(1024);' Q! L: `- b$ Z
select @qry = (select 'drop index '+o.name+'.'+i.name+';'" d2 H, O/ J7 t: p6 q1 h# o$ G5 Q
  from sys.indexes i join sys.objects o on  i.object_id=o.object_id
0 b3 {' R) g& _/ G7 K5 o  where o.type'S' and is_primary_key1 and index_id>0
$ a( ]- F* I/ f2 K$ I1 bfor xml path(''));
7 `. z" l$ o1 M' p+ V, I3 Iexec sp_executesql @qry
9 a5 v( O& N" P2 n, W3 T; {' I5 Q$ T% B               
. T9 \. v) z+ I5 M2 |解决方案:
' F- R# v/ G  u( P  i% M7 M                " L7 l4 ~3 i$ y, P

* I7 `% d, U! Y, L: Z7 }! Q: ]% D0 v! N
                你很亲密
- t  C+ y) ^' xdeclare @qry nvarchar(max);4 P# p! I& d, [: Z4 M0 m
select @qry = % ~  @) ~: U6 N6 q, `2 z0 M1 x& k
(SELECT  'DROP INDEX [' + ix.name + '] ON ' + OBJECT_NAME(ID) + '; '" ^& c  l4 @5 f+ @
FROM  sysindexes ix, `. c8 s3 e0 I) |
WHERE   ix.Name IS NOT null and ix.Name like '%prefix_%'0 _+ t  E7 \$ H, y1 f. y
for xml path(''));  E5 h: W/ h) l6 G& A
exec sp_executesql @qry
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则