簡體   English   中英

為現有索引生成T-SQL

[英]Generate T-SQL for Existing Indexes

您如何以編程方式為數據庫中的現有索引生成T-SQL CREATE語句? SQL Studio提供了一個“腳本索引為->創建為”命令,該命令以以下形式生成代碼:

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)做到這一點?

用T-SQL生成它是一場噩夢。 如果您願意使用SMO和c#,請查看數據庫中的SMO腳本索引和FK。

您甚至可以從PowerShell調用SMO,因此這可能是另一個選擇。

假設您擁有2005或更高版本,則可以簡單地查詢sys.indexessys.indexes所需的所有信息(就像它們在查詢的IF NOT EXISTS部分中所做的一樣)。

如果您只是在尋找數據庫中的所有索引,只需從該數據庫中的該表中提取所有內容即可。 如果您正在尋找滿足特定條件的索引,則這是sys.indexes中可用於過濾的字段列表 sys.index_columns表還具有每個索引的所有關聯列。

使用此方法,您應該能夠獲取數據庫索引所需的所有信息。

這篇博客文章有一個不錯的SQL代碼片段,它使用這些技巧來查詢數據庫中的索引,您也許可以使用其中的一些代碼來做您想要的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM