Каждая таблица имеет object_id
, и имя, под которым она известна, является просто атрибутом этого объекта.Вы могли видеть каждую из таблиц из вашего вопроса, перечисленных в представлении sys.objects
, с запросом, подобным следующему:
select *
from db_nm.sys.objects as o
where o.name in ('MAIN', 'TMP', 'LATEST')
and o.type = 'U' --filtering to (user-defined) Tables only
Каждый индекс, указанный в sys.indexes
просмотр, показывает два идентификатора.Первый - это index_id
, который является идентификатором самого индекса, и object_id
, который является идентификатором индексируемого объекта.
Это означает, что при использовании sp_rename
для изменения именитаблицы, единственное, что происходит, это то, что атрибут name
объекта обновляется, и ни один из идентификационных номеров не изменяется.
Другими словами, если index_a
указывал на объект 123456 до переименования таблицы, он все равно будет указывать на этот объект впоследствии.
Обновление:
Вы можете проверить настройку таблицы / индекса, используя запрос ниже, который вернет одну запись для каждой комбинации таблицы / индекса.
select s.name as schema_nm
, o.name as table_nm
, i.name as index_nm
from db_nm.sys.objects as o
inner join db_nm.sys.schemas as s on o.schema_id = s.schema_id
left join db_nm.sys.indexes as i on o.object_id = i.object_id
where o.type = 'U'
and o.name in ('MAIN', 'TMP', 'LATEST')
order by 1, 2, 3