2010-06-10 47 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代码片段,它使用这些技巧来询问数据库中的索引,并且您可以使用它的一小部分来执行您想要的操作。