Скрипты отфильтрованных индексов прекрасно работают для меня. Вот некоторый тестовый код, который вы можете попробовать:
Создание отфильтрованного индекса с помощью Adventworks (из примера BOL):
USE AdventureWorks2008R2;
GO
IF EXISTS (SELECT name FROM sys.indexes
WHERE name = N'FIBillOfMaterialsWithEndDate'
AND object_id = OBJECT_ID(N'Production.BillOfMaterials'))
DROP INDEX FIBillOfMaterialsWithEndDate
ON Production.BillOfMaterials;
GO
CREATE NONCLUSTERED INDEX "FIBillOfMaterialsWithEndDate"
ON Production.BillOfMaterials (ComponentID, StartDate)
WHERE EndDate IS NOT NULL;
GO
Используя sqlps, перейдите к контейнеру индекса для таблицы Production.BillOfMaterials:
cd SQLSERVER:\SQL\WIN7BOOT\SQL1\Databases\AdventureWorks\Tables\Production.BillOfMaterials\indexes
Получите индекс FIBillOfMaterialsWithEndDate и выполните его сценарий:
get-item FIBillOfMaterialsWithEndDate | foreach {$_.script()};
CREATE NONCLUSTERED INDEX [FIBillOfMaterialsWithEndDate] ON [Production].[BillOfMaterials]
(
[ComponentID] ASC,
[StartDate] ASC
)
WHERE ([EndDate] IS NOT NULL)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF,
ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]