我想创建一个脚本来修改表上的索引。首先,我检查查询中的sys.indexes和sys.index_columns,以确保索引尚未修改(列与我预期的相同),如果需要更新,则删除索引。然后,如果新结构不存在,我将创建具有新结构的索引。所有这些似乎都工作得很好,当我转到我的表上的对象浏览器并查看索引的属性时,一切看起来都很好。但是,当我再次查询sys.indexes和sys.index_columns时,它显示了旧索引中的结构。如何更新这些表?我假设在删除索引后再次创建索引时,它会自动发生。
发布于 2013-06-10 21:51:14
我的查询是错误的,那就是查看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'https://stackoverflow.com/questions/17025459
复制相似问题