在SQL Server中调用.NET程序集

分类:DotNet    发布时间:2016-4-18 10:13:32

使用到这东西完全是个巧合和无奈之举。不小心在数据库中插入了一些HttpUtility.UrlEncodeUnicode之后的数据。数据库里的一些字段成了%uxxxx%uxxxx这样的结构。

搜索了半天T-SQL UrlDecode的函数,发现都不支持上面这种Unicode的。自己对T-SQL又不熟悉,时间也很紧迫。

解铃还须系铃人,想到在T-SQL里调用HttpUtility.UrlDecode应该会比较方便。查了一下,大概代码如下。这东西用完就忘,记下来备查吧。

建立一个DLL,一个类,代码如下。

public partial class SystemWeb 
    { 
        [SqlMethod] 
        public static SqlString UrlDecode(string value) 
        { 
            return new SqlString(HttpUtility.UrlDecode(value)); 
        } 
    }

放到数据库服务器上。

之后运行下面的T-SQL代码

 

EXEC sp_configure ''show advanced options'',''1''; 
GO 
RECONFIGURE; 
GO 
EXEC sp_configure ''clr enabled'',''1'' 
RECONFIGURE; 
GO 

ALTER DATABASE DBName SET TRUSTWORTHY ON 
GO 

CREATE ASSEMBLY 
[System.Web] FROM 
''C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\System.Web.dll'' 
WITH permission_set = UNSAFE 
GO 

CREATE ASSEMBLY SQL_CLR_Url 
FROM ''D:\SqlClr.dll'' 
WITH PERMISSION_SET = UNSAFE 

GO

CREATE FUNCTION SqlUrlDecode(@urlstr NVARCHAR(4000)) 
RETURNS NVARCHAR(4000) 
AS 
EXTERNAL NAME SQL_CLR_Url.[SqlClr.SystemWeb].UrlDecode 
GO   

然后就可以在T-SQL里调用这个函数了。

select dbo.SqlUrlDecode(Name) from Table

安全起见,屁股擦完了,记得把clr关掉。

最新评论

我要发表评论

名称:
电子邮件:
个人主页:
内容:

 博客分类