2010-06-17 68 views
1

我有一個類似於工作流的應用程序在C#類庫中的業務邏輯,但是在每個月的月底,庫中的某些過程需要被調用,我認爲調用這個計劃執行的理想機制是使用Sql服務器代理(sql作業最好,儘管我打開即使進入SSIS地獄,如果它絕對需要),但問題是我如何調用過程sql作業中的應用程序庫?SQL Server CLR嵌入SQL Server代理的業務邏輯和時間表執行

應用程序庫也從asp.net頁中使用的,因此它通常具有配置輸入和輸出數據庫

我明白,步驟是一個Web應用程序上下文(web.config中)或多或少

1)嵌入到SQL Server的CLR組件類庫,強大的重要標誌和部署 2)調用庫

我不明白的事情是,部署這樣的CLR組件時,孰與發生Web應用程序上下文我該如何準確地部署與合適的app.config CLR?如果我需要更改連接字符串,是否必須重新部署CLR?

我也不確定,因爲CLR需要連接回數據庫調用它(用於讀寫表的目的),但我猜測必須格外小心以避免自我調用,並且這種事情。

+0

沒有關於這個的想法? – lurscher 2010-06-24 20:11:55

回答

1

首先,這個帖子在「使用SSIS」 :-P

只要您的庫中包含的鏈接System.Web.dll中,我不認爲你可以在SQL註冊它結束服務器作爲SQLCLR組件。 SQLCLR組件非常有限,不能包含任何參考。

您可以將業務邏輯的前端特定部分移動到單獨的表示層庫中。這通常比混合業務邏輯和表示類(如Web應用程序上下文)更好。之後,您可以嘗試將您的程序集部署到SQL Server。

現在您可以創建第二個SQLCLR庫,其中包含用於編排業務對象的.NET存儲過程。

但是,在這裏我並沒有真正看到SQLCLR的優點。這將需要對源代碼進行大量更改,並對整個應用程序造成一些限制。

我的個人喜好爲 可以使用SSIS包。在這裏你可以引用任何其他的DLL並使用它的功能。或者編寫一個簡單的.NET控制檯應用程序,它將由SQL Agent啓動。 在這兩種情況下,實現幾乎相等。

SQLCLR特別設計用於處理純數據庫特定的任務,這些任務碰到了可能的(和暗示的)T-SQL特性的壁壘。

+0

確實可以將System.Web和許多其他FCL庫部署到SQL,但只有2.0/3.0/3.5 - 不是4.0 – abatishchev 2010-07-23 06:03:27

+0

很好的答案,謝謝。那就是SSIS – lurscher 2010-07-24 14:01:23