zoukankan      html  css  js  c++  java
  • 在SQL Server中调用.NET程序集

    使用到这东西完全是个巧合和无奈之举。不小心在数据库中插入了一些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关掉。

  • 相关阅读:
    进程与线程
    java的引用
    基本类型变量、引用类型变量的在java中的存放位置
    Spring学习(三)
    Spring学习(一)
    Struts2学习(三)
    Vue,resource基本使用
    uni-app v-for数据的绑定唯一
    uni-app,v-for时 block 和 view 的使用
    Vue,生命周期函数演示(创建阶段的4个钩子函数,组件运行和销毁阶段的钩子函数)
  • 原文地址:https://www.cnblogs.com/nankezhishi/p/2295049.html
Copyright © 2011-2022 走看看