如何检查是否使用T-SQL在SQL Server 2000数据库中自动创建统计信息?

时间:2010-02-11 12:40:52

标签: sql tsql sql-server-2000

前段时间我不得不想出一种方法来清理SQL Server 2005数据库中某些表的所有索引和用户创建的统计信息。经过几次尝试后,它可以工作,但现在我必须在SQL Server 2000数据库中工作。对于SQL Server 2005,我使用了

SELECT名称FROM sys.stats
WHERE object_id = object_id(@tableName)
AND auto_created = 0

获取用户创建的统计信息。但是,SQL 2000没有sys.stats表。我设法以可区别的方式从sysindexes表中获取索引和统计信息,但我无法弄清楚sys.stats.auto_created与SQL 2000的匹配是什么。任何指针?

顺便说一下:请使用T-SQL。

2 个答案:

答案 0 :(得分:0)

您可以加入sysobjects(基于id列)并检查xtype列的值:

  

C =检查约束
  D =默认或默认约束
  F =外键约束
  L =日志
  FN =标量函数
  IF =内联表函数
  P =存储过程
  PK = PRIMARY KEY约束(类型为K)
  RF =复制过滤器存储过程
  S =系统表
  TF =表函数
  TR =触发器
  U =用户表
  UQ = UNIQUE约束(类型为K)
  V =查看
  X =扩展存储过程

(来自SQL Server 2000表格地图文档)

您需要以下内容:

SELECT SI.name FROM sysobjects AS SO, sysindexes AS SI
WHERE SO.id = SI.id
AND SO.xtype <> 'S'

答案 1 :(得分:0)

INDEXPROPERTY有一个“IsAutoStatistics”属性。我还记得统计信息也存储在sysindexes中,所以你可以从那里获取ID。

抱歉,我没有SQL 2000框来测试或确认...