假如你有一個購物類的網站,那麼你如何給你的客戶來推薦產品呢?這個功能在不少電商類網站都有,那麼,經過SQL Server Analysis Services的數據挖掘功能,你也能夠輕鬆的來構建相似的功能。數據庫
此篇將介紹如何在SSAS存儲過程當中封裝一段預測查詢,從而方便客戶端的調用。dom
在SQLServer數據引擎服務中,編寫存儲過程,咱們能夠經過SQL語句以及CLR的方式進行編寫。那麼在分析服務下可否寫存儲過程呢?答案是能夠的,只不過是只能經過CLR的方式來實現。如下記錄實現過程及要點。網站
首先,建立的項目類型爲類庫項目,並且,不管你使用Visual Studio的什麼版本,都要指定.net framework的版本爲2.0。spa
引用關鍵dll文件,引用地址:C:\Program Files\Microsoft SQL Server\MSAS11.MSSQLSERVER\OLAP\bin\msmgdsrv.dll.net
留意下MSAS11,本文使用的環境是SQL Server 2012,若是是2008的話對應的是MSAS10。3d
代碼中須要添加的引用:調試
using Microsoft.AnalysisServices.AdomdServer;blog
而後在類裏建立方法,須要注意的是在方法前須要加入以下聲明:接口
[SafeToPrepare(true)]進程
因爲在此存儲過,程中的操做是接收參數後而後將其拼裝成DMX語句來返回相應的預測結果,因此項目引用了ADOMD.NET。關於ADOMD.NET能夠參考前幾篇文章。
留意到在本文的示例代碼中,把訪問的接口文件和實現文件分開了,這主要是,在接口文件裏,方法的聲明標記須要ADOMDServer的支持(留意前面提到的using),而啓動一個DMX查詢須要ADOMDClient的支持,它們下面都有ADOMDConnection,爲了不命名空間的衝突因此這裏分開來寫:
留意下返回類型是DataTable。你也能夠選擇返回其它類型,可是爲了在下面能在Management Studio中的DMX查詢界面可以直接看到結果,因此須要指定DataTable返回類型。
存儲過程的代碼建立完畢後,進行編譯,編譯完成後能夠在bin目錄下看到生成的dll文件,這個文件就是要被髮布到SSAS要用到的。好比這裏用到的是SSASCLR.dll。
打開Management Studio,鏈接到分析服務,找到要用到的數據庫,這裏使用AdventureWorks示例數據庫。
在Assembly下點擊右鍵,選擇New Assembly…
在File name旁點擊瀏覽,找到剛纔編譯的dll文件。點擊OK,部署完成。
新建DMX查詢:
SSAS下CLR的存儲過程調用格式:程序集名稱+方法名
筆者不得不提一句,這是一個很特殊的地方,由於直接跳過了類名。
好比:CALL [SSASCLR].GetMiningResult()
以上如何開發和部署SSAS的CLR存儲過程介紹完畢。接下來還有一個問題,就是如何調試存儲過程呢?好比,在存儲過程被調用的時候,檢查下代碼中拼裝的DMX語句是否正確。
這裏首先須要在Visual Studio裏打開項目,而後在菜單欄的"調試"下找到"附加到進程"。
找到分析服務所對應的進程,名稱爲msmdsrv.exe。要選中下面的"顯示全部用戶的進程"這裏才能夠看的到。
這樣,當咱們在Management Studio裏經過DMX調用這個存儲過程,而且在代碼裏設置好斷點,那麼就能夠在對應位置看到調試信息。
總結:
此篇在前幾篇的基礎之下,把DMX查詢挖掘模型的過程封裝到了SSAS CLR存儲過程中,而且演示了完整的方法以及須要注意到的地方。