2012-01-02 8 views
0

データベース定義(テーブル、インデックス、トリガーなど)をpowershellで.sqlファイルにスクリプトを作成しようとしています。今まではうまくいきました。Powershellでフィルタリングされたインデックスが見つかりません

最近、フィルタリングされたインデックスをSQL Server 2008データベースで使用し始めました。これらの索引は、WHERE句なしでスクリプト化されています。

私はどちらかとMS SQL Server Management Studioの

内のスクリプトを生成しようとした場合、それが働いている

「インデックスを右クリック - としてスクリプト - - インデックスを作成する」または「スクリプトを生成するタスクを」 。

フィルタリングされたインデックスについては、ここでhttp://sqlblog.com/blogs/aaron_bertrand/archive/2011/05/16/connect-digest-2011-05-16.aspxというバグレポートを読んだことがありますが、私はそれらを私の問題に適用するかどうかはわかりません。

アドバイスはありますか?

答えて

0

フィルタリングされたインデックスのスクリプトは、私にとってうまく機能します。ここではあなたが試すことができますいくつかのテストコードは次のとおりです。

は、(BOLの例から)Adventworksを用いて濾過したインデックスを作成します。

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 

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] 

はFIBillOfMaterialsWithEndDateインデックスとスクリプトを入手します

関連する問題