在SQL SERVER 中,写一段脚本,将当前数据库中所有表名以'E'开头的数据表上的名字为‘AAA'的索引删除,请教下怎么实现。本人对SQL SERVER不太熟悉。thanks in advance.

解决方案 »

  1.   


    declare @stmt varchar(8000);
    set @stmt='';
    select @stmt=@stmt+'drop index AAA on '+quotename(name)+';' 
    from sys.tables where name like 'E%';
    -- print @stmt;
    exec(@stmt);
      

  2.   

    sp_msforeachtable 'IF ''?'' LIKE ''E%'' DROP INDEX [?].AAA'try
      

  3.   


    EXEC sp_msforeachtable 'IF PARSENAME("?",1) LIKE "tb_%"
    AND EXISTS (SELECT * FROM sys.indexes WHERE OBJECT_ID = OBJECT_ID(PARSENAME("?",1)) AND name = "AAA") 
    BEGIN DROP INDEX AAA ON ?; PRINT "DROP INDEX AAA ON ?" END'
      

  4.   

    把 tb_% 改成 E%
      

  5.   

    刚实测了一下,4#的代码有问题,以下代码在SQL2005以上版本可用:EXEC sp_msforeachtable 'IF PARSENAME(''?'',1) LIKE ''T%'' BEGIN TRY DROP INDEX ?.AAA END TRY BEGIN CATCH END CATCH'
      

  6.   

    Thanks.I will take a try,