如何在SQL中调用标准的.NET程序集

问题描述:

我遇到了一个问题,即我的表中的列中有使用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

有很多使用.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