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

SQL调用C# dll(第二中DLL,强名称密匙)的更多相关文章

  1. SQL调用C# dll(第一中DLL,没使用强名称密匙,默认是 safe)

    https://msdn.microsoft.com/zh-cn/library/ms345106(es-es).aspx 1.新建项目名称SQLDllTest,类代码如下,没有用Using引用其他类 ...

  2. Delphi程序调用C#.Net编译的DLL并打开窗体(详解)

    Delphi程序调用C#.Net编译的DLL并打开窗体(详解)最近用C#.Net写了一个公用模块, 本以为仅提供给.Net程序使用, 但是领导要求把这些功能提供给旧系统使用, 天啦, 几套旧系统全是D ...

  3. 编译可供C#调用的C/C++动态链接库dll文件

    编译可供C#调用的C/C++动态链接库dll文件,C语言控制台应用程序,探索生成dll过程 由于项目需求,需要公司另一个团队提供相关算法支持,是用C语言编译好的dll库提供给我们进行调用. 但是拿到d ...

  4. 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试

    from:http://m.blog.csdn.net/article/details?id=51075023 在VS2015中先创建C#项目,然后再创建要编写的动态库DLL项目,这样做的好处是整个解 ...

  5. (转)C#调用非托管Win 32 DLL

    转载学习收藏,原文地址http://www.cnblogs.com/mywebname/articles/2291876.html 背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使 ...

  6. AutoCAD.NET 不使用P/Invoke方式调用acad.exe或accore.dll中的接口(如acedCommand、acedPostCommand等)

    使用C#进行AutoCAD二次开发,有时候由于C#接口不够完善,或者低版本AutoCAD中的接口缺少,有些工作不能直接通过C#接口来实现,所以需要通过P/Invoke的方式调用AutoCAD的其他DL ...

  7. java调用C/C++写的dll(转)

    源:java调用C/C++写的dll Java语言本身具有跨平台性,如果通过Java调用DLL的技术方便易用,使用Java开发前台界面可以更快速,也能带来跨平台性. Java调用C/C++写好的DLL ...

  8. Java之Jacob调用COM接口DLL-----------------------------------dm。dll

    用Java控制windows了,嗯,低层次按键模拟,可控制游戏,内存也不在话下. 一.环境介绍 1.myeclipse8.5 2.著名按键插件dm.dll  32bit.此插件实现COM接口,百度百科 ...

  9. Java调用C/C++实现的DLL动态库——JNI

    由于项目的需要,最近研究了java 调用DLL的方法,将如何调用的写于此,便于日后查阅: 采用的方法是JNI:Java Native Interface,简称JNI,是Java平台的一部分,可用于让J ...

随机推荐

  1. Hadoop Api 基本操作

     hadoop环境配置好后,直接可以在window上进行调试.话不多说,直接上源码. package cn.terry; import java.io.FileInputStream; import ...

  2. vue 要点

    一: 1.  如果在实例创建之后添加新的属性到实例上,它不会触发视图更新. 2.  v-show 的元素会始终渲染并保持在 DOM 中.v-show 是简单的切换元素的 CSS 属性 display.

  3. Could not resolve all files for configuration;Andriod在build.gradle添加compile files()报错

    在build.gradle中添加个 compile files('libs/alipaySdk-20170922.jar') 就一直报这个错误 Error:Could not resolve all ...

  4. linux学习思维导图(转)

    转自:https://blog.csdn.net/m1585761297/article/details/80017111 先附上一张学习路径的导图 导图一 导图二(一套) 1.Linux目录结构 2 ...

  5. Github上 vue-element-admin项目配置

    Github对应地址 https://github.com/PanJiaChen/vue-element-admin 其中git为最新版本才支持github 的 clone代码  步骤如下 # clo ...

  6. CheckedListBox  数据绑定

    CheckedListBox  数据绑定方式有多总,常用的绑定方式总结如下: 1.  Items.Add 通过 Itemes.Add 方法来向 CheckedListBox  中添加项 2. Data ...

  7. chrome浏览器的VUE调试插件Vue.js devtools

      chrome浏览器的VUE调试插件Vue.js devtools 应用商店直接安装 安装成功后在VUE文件打开可以直接调试: 提示效果如下: F12进入调试状态即可: 安装中出现的问题: 插件安装 ...

  8. 如何将相册中的动态GIF图转化成NSData类型

    http://www.cocoachina.com/bbs/read.php?tid=151776

  9. 读取文件 读取项目里面的json

    ClassPathResource resource = new ClassPathResource("properties/post2LazadaTest.json"); Fil ...

  10. Linux 实现与宿主机共享文件夹 Centos7

    (选用的系统 centos7) 01,添加共享目录,右键虚拟机 => 设置 => 选项 => 共享文件夹(只有在虚拟机为关机状态才能添加) 02,开机,查看当前虚拟机的共享目录 =& ...