2011-02-23 55 views
3

我想知道是否有人能夠爲我提供一些關於創建C#程序集的指導或書籍建議,這些C#程序集將加載到sqlserver中並作爲新數據在數據庫上運行進來Howto create ac#assembly to load into sql server 2008

背景:
我有幾年的Java經驗,創造了一種算法來對從SQL查詢檢索的數據運行。我的僱主現在希望我將它創建爲一個直接位於數據庫上的c#程序集,並在數據進入(或定期點)時執行分析,並在超出特定閾值時發出警報。

我從來沒有在c#編碼,但我被告知它是非常類似於Java。 c#的學習不是我的問題,我認爲我可以從網上資源中選擇。我在查找信息時遇到困難的是程序集,以及它如何與sqlserver /如果需要在代碼中完成特定的任何操作。

我一直在線瀏覽微軟的msdn庫以獲得一個想法,我認爲我正在尋找的是C# SQL CLR Database Project

這是正確的,我正在努力完成什麼?如果有的話,任何人在處理這件事時都有任何提示/要注意的事項?

ps。有沒有辦法以某種方式直接處理表格?而不是像我用Java一樣不斷地對數據執行查詢?我不確定這是否可行,但我認爲這可能是因爲程序集以某種方式直接連接到數據庫。

+0

數據如何「進來」。它是導入還是一些應用程序將它們放入?如果你必須處理一組數據,那麼你可能更喜歡像你之前做的那樣查詢數據庫。根據您需要使用的數據集的大小來執行分析,可能還有其他選項。但沒有更多的信息,很難指導你。 – 2011-02-23 03:20:21

+0

我不得不進一步瞭解,因爲我實際上並不知道。我們從外部網站獲取數據,並且在實際插入到我們的表格之前,我們相信它會在sqlserver中進行一系列處理。我將要處理的數據量非常大(目前沒有那麼多,但計劃要大得多),目前它只查詢大約314行,但在未來它將成千上萬,我認爲 – Mike 2011-02-23 03:25:09

+0

構建CLR UDF(用戶定義的函數)並不總是最好的方法。根據我的經驗,99%的時間可以從原生SQL Server解決方案中獲得更高的性能,即使您必須使用XML查詢或其他方式進行一些迴轉。我曾經構建過一個整潔的UDF聚合,它將列中的字符串串聯起來,並且運行良好,但純粹的SQL Server XML查詢(XPath)解決方案證明更快。在SQL Server中,如果可能的話,我會首先查找原生SQL解決方案。或者在數據到達服務器之前處理數據。 。 。 – richard 2011-02-23 06:02:01

回答

4

你可以做的是用c#爲sql server建立user defined functions。爲了讓該函數在插入新數據時運行,您可以爲調用函數的相關表編寫trigger,作爲inserted table上的選擇查詢的一部分。

+0

我有一個關於插入表的問題,因爲從我讀的內容看來,它似乎只存儲了正在添加的行。我需要在所有數據的分析中包含這些數據,我是否讀取這個錯誤或插入的表是否只存儲新添加的行? – Mike 2011-02-23 14:02:29

+0

@Mike插入的表只存儲新行。如果你需要所有數據,你的觸發器仍然可以與其他表進行交談。 – 2011-02-23 14:29:11