博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL调用C# dll(第二中DLL,强名称密匙)
阅读量:6500 次
发布时间:2019-06-24

本文共 1546 字,大约阅读时间需要 5 分钟。

参考:微软官网 

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 SQLCLRSyncLoginDROP ASYMMETRIC KEY SQLCLRSyncKey

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

use TestDBgocreate 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

转载于:https://www.cnblogs.com/huaan011/p/4342400.html

你可能感兴趣的文章
vmware的APD和PDL详细解析
查看>>
理解:思科设备上的网络地址翻译功能(NAT)功能
查看>>
演示:使用协议分析器取证IPv6的报文结构
查看>>
oracle 11gr2 rac中的4种IP解说
查看>>
为什么你找不到工作?
查看>>
一名合格的测试员应具备的素质
查看>>
SCCM 2007系列3 配置
查看>>
Lync 小技巧-22-申请属于自己的域名
查看>>
20 个免费的 jQuery 的工具提示插件:
查看>>
交易算法故障导致Knight资本集团损失超过4亿美元_IT新闻_博客园
查看>>
linux改ip
查看>>
Oracle数据表解锁
查看>>
堆,栈,new/delete/malloc/free[zz]
查看>>
The CATALINA_HOME environment variable is not defined correctly
查看>>
关于vs2010 起始页
查看>>
VC:CEdit类
查看>>
PacketFence 3.6.0 发布,网络接入控制
查看>>
Debian Linux下的Python学习——列表,元组和字典之列表
查看>>
从sprintf函数谈符号扩展问题
查看>>
Android加载对话框,异步执行代码的封装类
查看>>