Cuando se crea PK o UK, SQL Server crea automáticamente un índice único para esas restricciones. La fecha de creación de esas restricciones será la misma que la fecha de creación para los índices correspondientes.
Dado que la vista sys.indexes no tiene la columna create_date, es absolutamente inútil buscar este tipo de información. Además, la columna object_id en esta vista nunca se referirá a la restricción correspondiente. Apuntará a la tabla a la que pertenece el índice. La siguiente prueba demostrará el punto:
CREATE TABLE dbo.TEST_T1
(
COLUMN_1 INT NOT NULL,
COLUMN_2 INT NOT NULL,
CONSTRAINT PK_TEST_T1 PRIMARY KEY (COLUMN_1)
)
GO
WAITFOR DELAY '00:00:01';
ALTER TABLE dbo.TEST_T1
ADD CONSTRAINT UK_TEST_T1 UNIQUE (COLUMN_2)
GO
SELECT O.name, O.object_id, O.create_date, I.object_id, I.name AS index_name
FROM sys.objects AS O
LEFT OUTER JOIN sys.indexes AS I ON O.object_id = i.object_id
WHERE O.name IN ('TEST_T1', 'PK_TEST_T1', 'UK_TEST_T1')
El resultado es:
name object_id create_date object_id index_name
PK_TEST_T1 272720024 2015-03-17 11:02:47.197 NULL NULL
TEST_T1 256719967 2015-03-17 11:02:47.190 256719967 PK_TEST_T1
TEST_T1 256719967 2015-03-17 11:02:47.190 256719967 UK_TEST_T1
UK_TEST_T1 288720081 2015-03-17 11:02:48.207 NULL NULL
lo tanto, si usted quiere ver create_date para PK o Reino Unido índices no hay necesidad de unirse con sys.indexes . Usted debe seleccionar de sys.objects:
SELECT name, object_id, create_date
FROM sys.objects
WHERE name IN ('PK_TEST_T1', 'UK_TEST_T1')
AND type IN ('PK', 'UQ')
El resultado es:
name object_id create_date
PK_TEST_T1 272720024 2015-03-17 11:02:47.197
UK_TEST_T1 288720081 2015-03-17 11:02:48.207
¿Por qué quieres crear la fecha para un índice? – Ariel
dba.stackexchange.com –
Tengo que encontrar el último índice que se crea en una tabla particular – vinay