【问题标题】:Undo changes made by SQL Server Database Tuning撤消 SQL Server 数据库优化所做的更改
【发布时间】:2010-08-30 15:57:59
【问题描述】:

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

【问题讨论】:

  • 我认为优化顾问生成了一个要运行的脚本,而不是对数据库进行更改 - 如果是这样,没有什么可以撤消的。
  • @adrianbanks:有一个自动应用推荐的选项。见:How to: Implement Tuning Recommendations

标签: sql-server-2005 database-tuning


【解决方案1】:

有一种方法,只要您通常没有重命名它们,Database Tuning Advisor 生成的对象都以_dta 为前缀

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

FOR 索引

SELECT        
*
FROM            
sys.indexes where name like '_dta%'

来自统计数据

SELECT
*
FROM 
sys.stats where name like '_dta%'

从那里我猜你会知道要丢弃哪些物品

【讨论】:

  • 嘿,雷蒙德,你把名字弄模糊的原因是什么?
【解决方案2】:

官方没有提到 UNDO 这个操作,就像没有官方推荐从 DROP DATABASE 中恢复一样。负责任的 DBA 不会做这些事情。

如果您刚刚完成并且很高兴,您很可能将名称保留为默认值 - 这很有帮助。雷蒙德的答案几乎就在那里。但是,如果您随着时间的推移完成了它,那么您就不想撤消所有好的统计数据和索引。第二个难题是检查索引上次更新的时间。如果您在几分钟前刚刚完成,这是一个很好的 UNDO 时间范围,请检查此查询以获取刚刚重建的索引和统计信息。

  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

这会将列表过滤到仅在过去一小时内更新的索引。但是,自动统计通常默认开启,并且偶尔会重建统计信息,因此您不希望删除 all 显示的索引。取消注释 and name like '_dta%' 将是一个开始,除非您重命名它们 - 在这种情况下,您肯定可以回忆起您命名它们的名称吗?

【讨论】:

    【解决方案3】:

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

    选择
    '删除索引' + OBJECT_NAME(object_id) + '.[' + name + ']' 来自
    系统索引 其中名称如 '_dta%'

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

    同样,你可以做同样的事情来删除统计数据

    选择
    '删除索引' + OBJECT_NAME(object_id) + '.[' + name + ']' 来自
    系统统计 其中名称如 '_dta%'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多