41 Stimmen

Holen Sie sich das Indizierungserstellungsdatum vom SQL-Server

Wie kann ich das Erstellungsdatum eines Index finden? Ich benutze SQL2008 R2. Ich habe sys.indexes überprüft, aber es hat kein Erstellungsdatum, also habe ich die Abfrage mit sys.objects verbunden. Das Ding ist, dass die Objekt-ID für einen Index und die Tabelle, die diesen Index enthält, gleich sind.

Ich benutze diese Abfrage...

select i.name, i.object_id, o.create_date, o.object_id, o.name
from sys.indexes i 
join sys.objects o on i.object_id=o.object_id 
where i.name = 'Index_Name'

Danke!

1voto

Parassharma1990 Punkte 21
VERWENDEN [IhrDB-Name]
SET NOCOUNT ON

DECLARE @Table_Name varchar(200)
DECLARE @Index_Name varchar(200)
DECLARE @Index_Type varchar(50)

DECLARE Indx_Cursor CURSOR
STATIC ENTHALTEN FÜR
            select s_tab.name as Table_Name, s_indx.name as Index_Name, s_indx.type_desc as Index_Type
            from sys.indexes s_indx
            inner join sys.tables s_tab on s_tab.object_id = s_indx.object_id
            where s_indx.name is not null;

ÖFFNEN Indx_Cursor
    WENN @@CURSOR_ROWS > 0
        BEGIN 
            FETCH NÄCHSTES VON Indx_Cursor INTO @Table_Name, @Index_Name, @Index_Type

            WÄHREND @@Fetch_status = 0
                BEGIN
                    INSERT INTO INDEX_HISTORY(table_name, index_name, Index_Type, Created_date) 
                    SELECT @Table_Name, @Index_Name, @Index_Type, STATS_DATE(OBJECT_ID(@Table_Name), 
                    (SELECT index_id FROM sys.indexes WHERE name = @Index_Name)) AS Index_create_Date

                    FETCH NÄCHSTES VON Indx_Cursor INTO @Table_Name, @Index_Name, @Index_Type
                END
        END

SCHLIEßEN Indx_Cursor
DEALLOCATE Indx_Cursor

auswählen distinct * von index_history

Aber das Hauptproblem bei Indizes ist, dass bei einem Neuaufbau oder einer Neuorganisation von Indizes das Erstellungsdatum des Index auf das Datum geändert wird, an dem der Index zuletzt neu erstellt oder neu organisiert wurde.

-1voto

ÄRÜÑ NATH Punkte 25
select 
    crdate, i.name, object_name(o.id)
from 
    sysindexes i
join 
    sysobjects o ON o.id = i.id 
where 
    i.name = 'My_Index_Name'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X