Создать T-SQL для существующих индексов - PullRequest
2 голосов
/ 11 июня 2010

Как вы программно генерируете операторы T-SQL CREATE для существующих индексов в базе данных? SQL Studio предоставляет команду «Script Index as-> Create to», которая генерирует код в виде:

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 ]

3 голосов
/ 11 июня 2010

Создание его с помощью T-SQL - это кошмар. Если вы готовы использовать SMO и c #, взгляните на SMO Script Index и FK в базе данных

Вы даже можете вызвать SMO из PowerShell, так что это может быть другой вариант.

2 голосов
/ 11 июня 2010

Предполагая, что у вас 2005 или более поздняя версия, вы можете просто запросить sys.indexes для всей необходимой вам информации (как они делают в части IF NOT EXISTS запроса).

Если вы просто ищете все индексы в базе данных, просто извлеките все из этой таблицы в эту базу данных. Если вы ищете индексы, которые соответствуют определенным критериям , вот список полей в sys.indexes, которые вы можете использовать для фильтрации. Таблица sys.index_columns содержит также все связанные столбцы для каждого индекса.

Используя это, вы сможете получить всю необходимую вам информацию об индексах в вашей базе данных.

В этом сообщении в блоге есть довольно хороший фрагмент SQL-кода, который использует эти приемы для опроса индексов в базе данных, и вы можете использовать его, чтобы делать то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...