本節書摘來自異步社群出版社《powershell v3—sql server 2012資料庫自動化運維權威指南》一書中的第2章,第2.16節,作者:【加拿大】donabel santos,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
本方案描述了如何用powershell和smo建立一個包含列的非聚集索引。
我們将使用adventureworks2008r2資料庫的person.person表。我們将在firstname和lastname上建立一個非聚集索引,包含middlename列。這個任務的等價t-sql語句為:
1.通過“start | accessories | windows powershell | windows powershell ise”打開powershell控制台。
2.導入sqlps子產品,建立一個新的smo伺服器對象。
3.添加如下腳本并運作。
4.檢查這個索引已經建立。打開ssms。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLjNmZwYWOjJ2N1IjY0MmMwMGN2IWNiZWY3IWMkNDO5AzNklTZyczNy8CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
建立索引的第一步是建立一個smo index對象,它需要表/視圖的句柄和索引名稱。
下一步是使用microsoft.sqlserver.management.smo.index類的indexedcolumn屬性設定所有的索引列。
索引的類型可以指定為microsoft.sqlserver.management.smo.indexedcolumn類的indexkey type屬性,它接受3個可能的值:
none:不唯一
driprimarykey:主鍵
driuniquekey:唯一
您也可以設定額外的屬性,包括fillfactor、是否為聚集索引。
當設定好所有的屬性後,調用smo index對象的create方法。
smo索引對象也支援不同類型的索引。
關于索引選項的更多資訊,檢視msdn文檔關于smo索引部分。
建立表方案