[英]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.indexes
以sys.indexes
所需的所有信息(就像它們在查詢的IF NOT EXISTS
部分中所做的一樣)。
如果您只是在尋找數據庫中的所有索引,只需從該數據庫中的該表中提取所有內容即可。 如果您正在尋找滿足特定條件的索引,則這是sys.indexes
中可用於過濾的字段列表 。 sys.index_columns
表還具有每個索引的所有關聯列。
使用此方法,您應該能夠獲取數據庫索引所需的所有信息。
這篇博客文章有一個不錯的SQL代碼片段,它使用這些技巧來查詢數據庫中的索引,您也許可以使用其中的一些代碼來做您想要的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.