Sql server 2005 撤消SQL Server数据库优化所做的更改

Sql server 2005 撤消SQL Server数据库优化所做的更改,sql-server-2005,database-tuning,Sql Server 2005,Database Tuning,我不确定这个问题是可以在这里问还是可以在这里问。我想知道……除了从备份中恢复外,是否有其他方法可以快速撤消SQL Server 2005 Tuning Advsor所做的更改?有一种方法,只要您没有重命名它们,通常数据库Tuning Advisor生成的对象的前缀是\u dta 因此,您可以通过运行此查询查看它们 用于索引 SELECT * FROM sys.indexes where name like '_dta%' SELECT * FROM

我不确定这个问题是可以在这里问还是可以在这里问。我想知道……除了从备份中恢复外,是否有其他方法可以快速撤消SQL Server 2005 Tuning Advsor所做的更改?

有一种方法,只要您没有重命名它们,通常数据库Tuning Advisor生成的对象的前缀是
\u dta

因此,您可以通过运行此查询查看它们

用于索引

SELECT        
*
FROM            
sys.indexes where name like '_dta%'
SELECT
*
FROM 
sys.stats where name like '_dta%'
来自统计数据

SELECT        
*
FROM            
sys.indexes where name like '_dta%'
SELECT
*
FROM 
sys.stats where name like '_dta%'
从这里,我想您会知道要删除哪些项目

没有关于撤消此操作的官方参考,正如没有关于从drop数据库恢复的官方建议一样。一个负责任的DBA不会做这些事情

如果您刚刚完成了,并且对触发感到高兴,那么您很可能会将名称保留为默认名称,这会有很大帮助。雷蒙德的答案几乎是正确的。但是如果你已经做了一段时间,那么你就不会想要撤销所有好的统计数据和索引。第二个难题是检查索引上次更新的时间。如果您在几分钟前刚刚完成了此操作(这是一个很好的时间段),请检查此查询以获取刚刚重建的索引和统计信息

  SELECT object_name(object_id) tablename,
         name indexname,
         nullif(name,name) statsname,
         STATS_DATE(object_id, index_id) lastupdated
    from sys.indexes
   where STATS_DATE(object_id, index_id) >= dateadd(hh,-1,getdate())
  -- and name like '_dta%'
   union all
  SELECT object_name(object_id) tablename,
         nullif(name,name) indexname,
         name statsname,
         STATS_DATE(object_id, stats_id) lastupdated
    from sys.stats
   where STATS_DATE(object_id, stats_id) >= dateadd(hh,-1,getdate())
  -- and name like '_dta%'
order by lastupdated desc

这会将列表向下过滤,仅过滤到在过去一小时内更新的索引。但是,自动统计在默认情况下通常处于启用状态,并且偶尔也会重建统计信息,因此您不希望删除显示的所有索引。取消注释
和像“\u dta%”这样的名称将是一个开始,除非您重命名它们-在这种情况下,您肯定可以回忆起您将它们命名为什么?

我经常使用psuedo动态SQL来生成所需的SQL语句。 这将删除以前缀_dta开头的所有索引

选择
'删除索引'+OBJECT_NAME(OBJECT_id)+'.['+NAME+'] 从
系统索引 其中的名称像“\u dta%”

将结果粘贴到一个新窗口中,然后我会在删除之前手动检查每个索引

同样,您也可以对删除统计信息执行相同的操作

选择
'删除索引'+OBJECT_NAME(OBJECT_id)+'.['+NAME+'] 从
sys.stats
如果名称像“\u dta%”

我认为调优顾问生成了一个要运行的脚本,而不是对数据库进行了更改-如果是这样,就没有什么可撤消的。@adrianbanks:有一个选项可以自动应用建议。看:嘿,雷蒙德,你把名字弄模糊的原因是什么?