2010-06-10 41 views
2

如何以編程方式爲數據庫中的現有索引生成T-SQL CREATE語句? SQL Studio提供了一個「腳本指數原樣>創建爲」,在表格生成代碼的命令:爲現有索引生成T-SQL

IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name = N'IX_myindex') 
    CREATE NONCLUSTERED INDEX [IX_myindex] ON [dbo].[mytable] 
    (
     [my_id] ASC 
    )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY] 
GO 

你將如何做到這一點編程(最好是通過Python)的?

回答

2

假設您有2005或更高版本,您可以簡單地查詢sys.indexes以獲取您需要的所有信息(例如他們在查詢的IF NOT EXISTS部分中執行的操作)。

如果您只是在數據庫中查找所有索引,只需從該數據庫中的該表中提取所有索引即可。如果您正在查找符合某些標準here's the list of fields in sys.indexes的索引,則可以使用該索引進行過濾。 sys.index_columns表也具有每個索引的所有關聯列。

使用此功能,您應該能夠獲取有關數據庫中索引的所有信息。

This blog post有一個非常好的SQL代碼片段,它使用這些技巧來詢問數據庫中的索引,並且您可以使用它的一小部分來執行您想要的操作。