在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关掉。 |
|
最新评论