जब पीके या यूके बनाया जाता है, तो SQL सर्वर स्वचालित रूप से उस बाधाओं के लिए अद्वितीय अनुक्रमणिका बनाता है। उन बाधाओं का create_date संबंधित इंडेक्स के लिए निर्माण दिनांक के समान होगा।
चूंकि sys.indexes दृश्य में create_date कॉलम नहीं है, यह इस तरह की जानकारी खोजने के लिए बिल्कुल बेकार है। इसके अलावा, इस दृश्य में object_id कॉलम कभी भी संबंधित बाधा को संदर्भित नहीं करेगा। यह सूचकांक से संबंधित तालिका को इंगित करेगा।
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')
परिणाम है::
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
इसलिए, यदि आप पी या ब्रिटेन अनुक्रमित के लिए create_date देखने के लिए sys.indexes साथ शामिल होने की कोई जरूरत नहीं है चाहता हूँ निम्न परीक्षण बिंदु का प्रदर्शन करेंगे । आप 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')
परिणाम है: (के आंकड़े) के आदेश दिनांक अवरोही क्रम में अनुक्रमित सूची
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
आप इंडेक्स के लिए निर्माण तिथि क्यों चाहते हैं? – Ariel
dba.stackexchange.com –
मुझे किसी विशेष तालिका पर बनाई गई नवीनतम अनुक्रमणिका को ढूंढना है – vinay