我想创建一个脚本来修改表上的索引。首先,我检查查询中的sys.indexes,sys.index_columns以确保索引尚未被修改(列与我期望的相同),并在需要更新时删除索引。然后,如果它不存在,我用新结构创建索引。所有这些似乎工作正常,当我去我的表上的对象浏览器并查看索引的属性一切都很好。但是,当我再次查询sys.indexes和sys.index_columns时,它会显示OLD索引的结构。如何更新这些表?我认为在删除索引后再次创建索引会自动发生。
答案 0 :(得分:2)
我的查询错误,正在查看sys.indexes。
我有这个:
SELECT *
FROM sys.indexes i
JOIN sys.index_columns ic
ON ic.index_id = i.index_id
AND ic.object_id = i.object_id
JOIN sys.columns c
ON c.object_id = i.object_id
AND c.column_id = ic.index_column_id --<--
WHERE i.name = 'Index002'
应该是这个:
SELECT *
FROM sys.indexes i
JOIN sys.index_columns ic
ON ic.index_id = i.index_id
AND ic.object_id = i.object_id
JOIN sys.columns c
ON c.object_id = i.object_id
AND c.column_id = ic.column_id --<--
WHERE i.name = 'Index002'