• SQL调用C# dll(第二中DLL,强名称密匙)


    参考:微软官网 https://msdn.microsoft.com/zh-cn/library/ms345106(es-es).aspx

    1、新建项目 SQLDllTestUsingNew

      Class1类代码:

         

    using System.Web;
    namespace SQLDllTestUsingNew
    {
        public class Class1
        {
            public static string GetStr(string par1)
            {
                return par1 + "水印New";
            }
        }
    }

    2、类库项目进行签名,签名后编译【项目】:

     

    3、启用CLR功能:默认情况下,Sql Server中的CLR是关闭的,

    exec sp_configure 'clr enabled',1  
    reconfigure  
    go

    4、

    注册DLL:

    为了调用我们写的那个方法,需要在SQL Server中注册我们刚刚编译好的那个DLL。在此之前,要知道在这个项目中如果要访问服务器之外的资源是要配置权限的。如果不配置,后面操作中会出现类似下面的错误。我找到的关于授权配置的内容:连接

    创建登录名和密钥,如果程序集有变更,要删除密钥和登录名重新创建:

    USE master; --此处必须是 master库
    GO  
     
    CREATE ASYMMETRIC KEY SQLCLRSyncKey FROM EXECUTABLE FILE = 'D:SQLDllTestUsingNew.dll'  
    CREATE LOGIN SQLCLRSyncLogin FROM ASYMMETRIC KEY SQLCLRSyncKey   
    GRANT EXTERNAL ACCESS ASSEMBLY TO SQLCLRSyncLogin;
    GRANT UNSAFE ASSEMBLY TO SQLCLRSyncLogin 

    创建程序集,DLL变更后要删除重新创建代码如下:

    DROP LOGIN SQLCLRSyncLogin
    DROP ASYMMETRIC KEY SQLCLRSyncKey

    5、创建程序集,DLL变更后要删除重新创建:

    use TestDB
    go
    
    create ASSEMBLY MySync 
    FROM 'D:SQLDllTestUsingNew.dll'
    WITH PERMISSION_SET = EXTERNAL_ACCESS;

    如果提示错误:Msg 6522, Level 16, State 1, procedure InsertingRows,Line 0
    A .NET Framework error occurred during execution of user defined routine or aggregate 'InsertingRows':
    System.Security.SecurityException

    改成:create ASSEMBLY MySync 
    FROM 'D:SQLDllTestUsingNew.dll'
    WITH PERMISSION_SET = UNSAFE;

    6、创建一个函数用于调用这个DLL

    CREATE FUNCTION dbo.fun_sync
    (  
        @strSql nvarchar(max)
    )
    RETURNS nvarchar(max)  
    AS EXTERNAL NAME [MySync].[SQLDllTestUsingNew.Class1].[GetStr] 

    7、调用创建的函数。

     select dbo.fun_sync('dsdfg')  

    结果: dsdfg水印New

  • 相关阅读:
    using 资源清理
    Http Module 介绍[转]
    一个类似CSDN的frameset框架
    vs.net2003的一个老问题“你试图打开的项目是Web项目,请指定URL路径”解决办法
    Oracle和SQL Server实现跨库查询
    Http 请求处理流程[转]
    Http Handler 介绍[转]
    asp.net后台控制div style
    sharepoint站点Feature的定制与开发
    为列表类型绑定Event Receiver
  • 原文地址:https://www.cnblogs.com/huaan011/p/4342400.html
Copyright © 2020-2023  润新知