本節書摘來自異步社群出版社《powershell v3—sql server 2012資料庫自動化運維權威指南》一書中的第2章,第2.14節,作者:【加拿大】donabel santos,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
本方案展示了如何用powershell和smo建立加密的存儲過程。
我們要用powershell建立的加密存儲過程的等價t-sql代碼如下:
按照如下步驟使用powershell建立存儲過程uspgetpersonbylastname。
1.通過“start | accessories | windows powershell | windows powershell ise”打開powershell控制台。
2.導入sqlps子產品,建立一個新的smo伺服器對象。
3.添加如下腳本并運作。
4.檢查是否存儲過程已建立。
(1)打開ssms。
(2)展開adventureworks2008r2資料庫。
(3)展開“programmability | stored procedures”。
(4)檢視存儲過程是否在這裡。
5.在powershell中測試存儲過程。在同一個會話中,輸入如下代碼并運作。
為了建立存儲過程,首先需要初始化smo storedprocedure對象。建立這個對象時,需要傳遞資料庫句柄和存儲過程名作為參數。
你可以設定存儲過程對象的一些屬性,如是否加密。
如果定制了textmode = $true,你需要自己建立存儲過程的頭部。如果你有參數,這些将會在你的文本頭部被定義,例如:
否則,如果textmode = $false,技術上允許powershell自動生成頭部,基于你給定的其他屬性和參數設定。你也需要逐一建立參數對象并将它們添加到存儲過程中。
當建立存儲過程時,使用字元串設定存儲過程對象的textbody屬性定義。
一旦頭部資訊、定義和存儲過程屬性就位,你可以調用create方法,将createproc語句發送到sql server,并建立存儲過程。