После большого изменения структуры БД мне нужно удалить все индексы из нее и установить новые индексы.
Я нашел хороший scrpipt для получения и удаления всех индексов, но у меня проблема - я не могу удалить индексы, созданные ограничением PRIMARY KEY. (возможно, есть и другие виды индексов, которые я не могу удалить).
У меня вопрос: как изменить код ниже, чтобы удалить все индексы, кроме индексов, созданных для первичных ключей или других, которые я не могу удалить вручную.
DECLARE @indexName VARCHAR(128)
DECLARE @tableName VARCHAR(128)
DECLARE [indexes] CURSOR FOR
SELECT [sysindexes].[name] AS [Index], [sysobjects].[name] AS [Table]
FROM [sysindexes]
INNER JOIN [sysobjects] ON [sysindexes].[id] = [sysobjects].[id]
WHERE [sysindexes].[name] IS NOT NULL AND [sysobjects].[type] = 'U'
OPEN [indexes]
FETCH NEXT FROM [indexes] INTO @indexName, @tableName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC ('DROP INDEX [' + @indexName + '] ON [' + @tableName + ']')
FETCH NEXT FROM [indexes] INTO @indexName, @tableName
END
CLOSE [indexes]
DEALLOCATE [indexes]