2009-11-17 67 views
4

我遇到了一個問題,即我的表中的列中有使用System.Xml.XmlConvert.Encode方法編碼的數據。如何在SQL中調用標準的.NET程序集

現在我需要在SQL中處理這些數據,並沒有找到一種方法來複制System.Xml.XmlConvert.Decode方法。

所以我一直在研究如何使用SQL中的System.XML命名空間來訪問此方法,而不必將其包裝在我自己的程序集中。這可能嗎?即如何通過T-SQL直接訪問該程序集?

+0

我會感到驚訝,如果這是可能的。 – Omar 2009-11-17 15:00:32

+0

是的,如果您的SQL Server版本支持集成的CLR環境,則可能。 – Amy 2009-11-17 15:05:26

+0

如果可能,我會如何做到這一點。我不想寫一個.NET包裝並使用創建彙編位。我想直接訪問System.XML名稱空間。 – Webcognoscere 2009-11-17 15:12:29

回答

2

有很多使用.NET for SQL編寫加載項的示例。我相信你將需要SQL 2005或更新版本才能創建加載項。

這是一個特別有用的例子。

Creating CLR SQL User Defined Function to Validate Values Using Regular Expressions @ MSDN

在你的情況,你可能會想編寫一個函數,它接受一個byte [],並返回一個字符串(解碼),與採用一個字符串,並返回一個byte [相應的功能以及] 。

其實我不確定你可以直接使用byte [],但是你應該能夠在SQL中編寫一個相應的包裝函數,它可以接收一個十六進制字符串並將其變爲varbinary()(如果需要的話) 。

編輯:

這裏有一些更持久鏈接到其他引用包含在事先聯繫,以防萬一它曾經消失。

How to: Create and Run a CLR SQL User-Defined Function @ MSDN

Custom Attributes for CLR Routines @ TechNet

+0

這使用包裝。我不想使用包裝類。我試圖避免必須使用創建彙編sql代碼 – Webcognoscere 2009-11-17 15:14:19

+0

好吧,我現在看到。創建一個SQL項目並在其中添加代碼。輝煌,感謝百萬meklarian – Webcognoscere 2009-11-17 15:21:50