参考:微软官网 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. mysql短日期 长时间转换为短日期

    fabutime    2018-09-26 15:27:03 date_format( fabutime,\'%Y-%m-%d\') as fabutime fabutime   2018-09-2 ...

  2. 微信小程序支付签名老是失败,在官网的校验签名工具校验成功,老是返回签名失败

    在网上也百度了各种签名不正确的解决方法,都没有问题,但签名就是不成功,实在找不出问题了,我就重置了一下api秘钥,结果成功了…… 不知道什么原因第一次填写的api秘钥也是我重置的,填写的也没有问题,但 ...

  3. tp3.2sql改变时间格式

    tp3.2sql改变时间格式2018-05-10取05-10 $listIn=D('api_article as a')->field('date_format( fabutime,\'%m-% ...

  4. RecyclerView实现ViewPager效果;

    看代码就好了,RecyclerView实现Viewpager的效果,添加了界面的改变监听,用法和普通的RecyclerView一样,还可以设置一次滑动多个界面: public class VpRecy ...

  5. windows下git的使用

    1.安装git 下载地址:https://git-scm.com/download/win

  6. win10 java1.7安装笔记

    博主不选择安装C盘,选择在D盘安装,新建Java文件夹,在Java文件夹中新建两个子文件夹,一个命名jdk1.7,一个命名jre,如果不区分目录安装jdk和jre,会导致一些文件的缺失,导致一些错误, ...

  7. python- 日志学习

    # @File : learn_logging.py #-*- coding:utf-8 -*- """ 日志:log 记录代码执行的过程 一旦记录下来,就可以根据日志去 ...

  8. android 实现一个简单纯文本的ListView

    思维线路: 1.创建一个ListViewActivity,LinearLayout布局里写了一个ListView布局 2.创建一个TextView布局给ArrayAdapter适配器使用 3.将Tex ...

  9. oracle insert 返回ID

    create or replace procedure getid(v_id out number)as  v_sql varchar2(500); begin v_sql:='insert into ...

  10. py库: PIL 、pillow(图像处理)

    https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014320027235877 ...