0

我想创建一个脚本来修改表上的索引。首先,我在查询中检查 sys.indexes、sys.index_columns 以确保索引尚未被修改(列与我预期的相同)并在需要更新时删除索引。然后,如果它不存在,我会使用新结构创建索引。所有这一切似乎工作正常,当我转到表上的对象浏览器并查看索引的属性时,一切看起来都很好。但是,当我再次查询 sys.indexes 和 sys.index_columns 时,它会显示 OLD 索引的结构。我怎样才能更新这些表?我认为它会在我删除索引后再次创建索引时自动发生。

4

1 回答 1

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'
于 2013-06-10T13:51:14.270 回答