さまざまなテーブルのインデックスを維持するためのストアドプロシージャを作成しようとしています。私は、インデックス名を取得できていますが、ALTER INDEX文でその名前を使用することができません:私は、インデックスをパラメータ化する方法をALTER INDEXでインデックス名を変更する
Incorrect syntax near '@indexName'. Expecting ALL, ID, or QUOTED_ID.
:
DECLARE reorgCursor CURSOR LOCAL FAST_FORWARD FOR
SELECT a.index_id, b.name, avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats (DB_ID(@MyDB), OBJECT_ID(@tableName), NULL, NULL, NULL) AS a
JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id
WHERE 5 < avg_fragmentation_in_percent AND avg_fragmentation_in_percent <= 30
OPEN reorgCursor
FETCH NEXT FROM reorgCursor
INTO @indexId, @indexName, @fragPct
WHILE @@FETCH_STATUS = 0
BEGIN
ALTER INDEX @indexName ON @tableName
REORGANIZE
FETCH NEXT FROM reorgCursor
INTO @indexId, @indexName, @fragPct
END
CLOSE reorgCursor
DEALLOCATE reorgCursor
問題は、私はエラーを取得するということです名?
EXEC(+ @tablename 'ON' 'ALTER INDEX' + @indexName +) – artm
はなぜ車輪の再発明していますか? http://ola.hallengren.com –
お返事いただき、ありがとうございました。 – Russ