码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2015-03-16 19:02:15      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

参考:微软官网 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;

创建程序集,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;

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

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

标签:

原文地址:http://www.cnblogs.com/huaan011/p/4342400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!