2010-02-11 48 views
0

後來我不得不想出一種方法來清理SQL Server 2005數據庫中某些表中的所有索引和用戶創建的統計信息。經過幾次嘗試,但現在我必須讓它在SQL Server 2000數據庫中工作。對於SQL Server 2005,我用如何檢查統計信息是否使用T-SQL在SQL Server 2000數據庫中自動創建?

SELECT名字從sys.stats
WHERE OBJECT_ID = OBJECT_ID(@tablename)
和auto_created = 0

獲取的統計數據的用戶創建的。但是,SQL 2000沒有sys.stats表。我設法從sysindexes表中以可區分的方式獲取索引和統計信息,但我無法弄清楚SQL 2000的sys.stats.auto_created匹配是什麼。任何指針?

BTW:T-SQL請。

回答

0

您可以加入到sysobjects(基於id列),並檢查xtype列的值:

C = CHECK約束
d =默認值或DEFAULT約束
F = FOREIGN KEY約束
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' 
0

INDEXPROPERTY有一個 「IsAutoStatistics」 屬性」。我還記得統計信息也存儲在sysindexes中,所以你可以從那裏獲得ID。

對不起,我沒有SQL 2000框來測試或確認這個...

相關問題