iT邦幫忙

0

SQL索引重建

sql

SELECT OBJECT_NAME(dt.object_id) ,
si.name ,
dt.avg_fragmentation_in_percent,
dt.avg_page_space_used_in_percent
FROM
(SELECT object_id ,
index_id ,
avg_fragmentation_in_percent,
avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, 'DETAILED')
WHERE index_id <> 0
) AS dt --does not return information about heaps
INNER JOIN sys.indexes si
ON si.object_id = dt.object_id
AND si.index_id = dt.index_id

這是一段測試索引是否需要重建的T-SQL語法
但是很怪,我去Run之後
竟然產生了
訊息 102,層級 15,狀態 1,行 11
接近 '(' 之處的語法不正確。

不知道是那裡出了問題,請各位大大幫忙一下

vividt iT邦新手 4 級 ‧ 2009-07-30 13:20:41 檢舉
我在SQL server 2005試了一下
是可以執行的

語法本身沒有問題
也許可能是其他問題
my407sw iT邦新手 5 級 ‧ 2009-07-30 18:38:28 檢舉
OK呀 SQL 2008 也行
2008可以執行+1

2 個回答

10
pcjung
iT邦新手 5 級 ‧ 2009-07-31 10:50:12
最佳解答

請先確認資料庫相容等級是否有90 以上,因dm_db_index_physical_stats 需在相容等級90以上才能使用,我試過相容等級90以下也會出現你所說的錯誤訊息,所以你先檢查一下吧。

8
happyemail
iT邦新手 5 級 ‧ 2009-08-01 07:07:04

When 相容等級=80

  1. Run SQL commend 'select DB_ID()' will return an integer
  2. replace the DB_ID() with this integer

我要發表回答

立即登入回答