Не большой поклонник отсталых взглядов совместимости как sysindexes
, потому что вы не будете иметь возможность полагаться на них навсегда, и потому предложил присоединиться в других фильтрах ответа на создания даты таблицы, не индекс. Для нормальных индексов SQL Server просто не регистрирует дату/время создания индекса (хотя вы можете получить это для ограничений).
Вы можете найти эту информацию (а также кто создал индекс, который вы не можете получить из метаданных, даже для ограничений) в трассировке по умолчанию, если 15 дней не выкатили еще:
USE your_database;
GO
DECLARE @path NVARCHAR(260);
SELECT
@path = REVERSE(SUBSTRING(REVERSE([path]),
CHARINDEX(CHAR(92), REVERSE([path])), 260)) + N'log.trc'
FROM sys.traces
WHERE is_default = 1;
SELECT
HostName, LoginName, ApplicationName, StartTime, [Index] = ObjectName, IndexId
FROM sys.fn_trace_gettable(@path, DEFAULT)
WHERE EventClass = 46
AND EventSubClass = 1
AND DatabaseName = DB_NAME()
AND ObjectID = OBJECT_ID('dbo.your_table_name')
AND IndexID IS NOT NULL
AND StartTime >= CONVERT(DATE, DATEADD(DAY, -15, GETDATE()))
ORDER BY EndTime DESC;
Двигаясь вперед, вы можете использовать триггер DDL для регистрации этой информации заранее, так что вам не придется бороться и полагаться на возраст следа по умолчанию для проверки этих мероприятий ...
Aaron - Я попробовал ваш запрос, но он говорит: у вас нет разрешения на запуск «SYS.TRACES». Поэтому мне понадобится другой подход. Спасибо, Sunil – Sunil
@ Суниль хорошо, может быть, это то, что вам нужно исправить. В конце концов, если вам не разрешено запрашивать sys.traces, вы, вероятно, заблокированы и от другого доступа к метаданным. –
Aaron - Есть ли другой запрос, который я мог бы использовать? – Sunil