[翻译]在SQL Server中使用CLR调用.NET方法

.NET平台本质解析:从CLR、IL到跨平台演进 .NET是一个统一的开发者平台,其核心是公共语言运行时(CLR)与中间语言(IL)构成的托管执行模型。CLR提供内存管理、异常处理、跨语言互操作等底层能力,而IL作为平台无关的字节码,由JIT编译器按需转换为原生指令,实现高性能与可移植性的平衡。这一设计赋予.NET强类型安全、确定性垃圾回收和企业级稳定性,广泛应用于银行核心系统、政务平台及云原生微服务。结合.NET Standard的API契约机制与.NET 5+的统一平台演进,开发者得以在Windows、Linux、macOS间无缝迁移代码。本文深入CL 阅读详情
原文地址: http://www.aspnetlibrary.com/articledetails.aspx?article=Using-CLR-to-access-.NET-functions-in-SQL-Server


[翻译]在SQL Server中使用CLR调用.NET方法


原文发布日期:2007.05.17
作者: Mark Smith
翻译: webabcd


介绍
我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法。按照微软所述,通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显著地增强了数据库编程模型。 这使得开发人员可以用任何CLR语言(如C#、VB.NET或C++等)来写存储过程、触发器和用户自定义函数。


我们如何实现这些功能呢?
为了使用CLR,我们需要做如下几步:
    1、在.NET中新建一个类,并在这个类里新建一个public方法。
    2、编译这个类为一个DLL。
    3、在SQL Server中注册这个DLL。
    4、新建一个SQL Server函数来访问指定的.NET方法。


接下来,我们一起来完成一个示例
首先,在Visual Studio中新建一个名为“SQLServerCLRTest”的类库项目。 然后,新建一个名为“CLRFunctions”的类,并在其内添加一个名为“HelloWold”的方法,代码如下:
public   class  CLRFunctions 
{
    
public static string HelloWorld(string Name) 
    
{
        
return ("Hello " + Name);
    }

}

这是一个非常简单的方法(为了让SQL Server可以调用它,它必须要是public和static的),这个方法有一个string类型的参数,返回信息为“Hello”加上你传入的参数。

现在,我们需要编译这个项目为一个DLL,并在SQL Server中注册它。 这也是比较简单的,在VS中右键单击项目,选择“生成”后程序就会生成一个DLL。 如果你的项目是调试模式的话,那么就可以在如下所示那样的路径里找到编译好的DLL。
C:/Documents and Settings/mark.smith/My Documents/Visual Studio  2005 /Projects/SQLServerCLRTest/SQLServerCLRTest/bin/Debug/SQLServerCLRTest.dll

找到这个DLL后,我们就可以把它拷贝到我们的SQL Server机器上了,如果是相同机器的话我们只要记住这个路径即可。


启用CLR功能
默认情况下,SQL Server中的CLR是关闭的,所以我们需要执行如下命令打开CLR:
exec  sp_configure  ' clr enabled ' , 1    
reconfigure    
go  


注册DLL
为了调用我们写的那个方法,需要在SQL Server中注册我们刚刚编译好的那个DLL。 我们可以在数据库中使用如下命令来注册DLL(路径为你的DLL文件的路径)
CREATE  ASSEMBLY asmHelloWorld  FROM   ' C:/SQLServerCLRTest.dll '    


在SQL Server中调用我们的.NET方法
为了调用.NET方法,我们可以写一个SQL Server自定义函数,并在其内使用“EXTERNAL NAME”来通知SQL Server使用CLR功能。 代码如下:
CREATE   FUNCTION  dbo.clrHelloWorld   
(   
    
@name   as   nvarchar ( 200 )   
)    
RETURNS   nvarchar ( 200 )   
AS  EXTERNAL NAME asmHelloWorld. [ SQLServerCLRTest.CLRFunctions ] .HelloWorld 

上面的自定义函数做了两项工作。 首先是声明了一个nvarchar参数,它等同于.NET里的string类型(如果将其设置为varchar并且后面使用了“EXTERNAL NAME”的话就会报错)。然后使用“EXTERNAL NAME”来调用.NET方法。 语法如下:
程序集名.类名.方法名

但是,当我使用这个语法调用.NET方法的时候,SQL Server就会报错,所以为了让它正常工作,我使用了如下语法:
程序集名. [ 类名 ] .方法名

现在我们就可以通过如下语句调用.NET方法了:
SELECT  dbo.clrHelloWorld( ' Mark ' )

当你运行这段代码的时候,就会得到一个返回结果“Hello Mark”。


我们通过一个很简单的示例演示了如何实现SQL Server的CLR,它可以给我们带来很多非常有用的帮助。
SmsForwarder v6.4.0 + Flask API 实战:5步搭建手机验证码自动化接收服务 本文详细介绍了如何利用SmsForwarder v6.4.0和Flask API构建企业级验证码自动化处理系统。通过5个关键步骤,包括系统架构设计、Android端配置、Flask服务端实现、企业级部署方案以及实战应用场景扩展,帮助开发者高效处理短信验证码,提升自动化测试和数据采集的工作效率。 阅读详情

相关推荐

一种四通道高精度IEPE加速度传感器控制器设计稿

一种四通道高精度IEPE加速度传感器控制器设计稿,颇具参考价值。

boyondmcu的博客 3851

ESP32驱动LED屏实现手机远程控制动态文字显示

物联网开发中,微控制器与LED显示屏的交互是典型的嵌入式应用场景。通过Wi-Fi/蓝牙无线通信协议,ESP32等物联网芯片可以接收移动端指令并驱动LED点阵实现动态显示。这种技术方案结合了嵌入式系统开发、无线通信协议栈和LED驱动三大核心技术,在智能零售电子价签、公共交通信息屏等场景具有广泛应用价值。以ESP32-WROOM模组为例,其双核架构能高效处理图形渲染任务,内置无线模块简化了手机配网流程。通过FastLED库实现PWM调光,配合WebServer组件构建轻量级HTTP服务,即可完成从手机输入到LE

weixin_33895475的博客 411

kettle实验十一:没有数据流入时停止操作

【实验目的】 1.利用Kettle的“阻塞数据直到步骤都完成”,“检测空流”,“中止”等组件,实现Kettle转换流程的控制。 2.熟练掌握“阻塞数据直到步骤都完成”,“检测空流”,“中止”等组件的使用,实现Kettle转换流程的控制。 【实验原理】 “检测空流”组件可以检测所在转换的输入数据,如果整个转换没有输入数据,通过“中止”组件终止整个转换的流程。在存在数据输入的情况,为了能让数据输出,需要和“阻塞数据直到步骤都完成”配合使用。当所有数据都已经从上个步骤“字段选择”读取完毕后,通过“阻塞数据直到步骤

weixin_44727274的博客 3847

SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数

转载来自周公的blog.....   很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程、触发器和存储过程的,不过之前开发的系统要么因为历史原因用的是SQL2000要么根本用不着在SQL Server中启用CLR,所以一直没有尝试。最近因为项目的原因,在这方面做了一个调研,现在在这里分享一下心得。 首先要说明的是要在SQL Server中启用CLR必须是在SQL S

loveheye的专栏 599

Unity分包下载实战:AssetBundle+CDN+热更新全链路指南

分包下载是移动应用资源管理的核心技术,本质是将大体积安装包拆解为按需加载的独立资源单元,以解决用户安装意愿低、首屏启动慢、热更新不可控等关键问题。其底层依赖资源打包机制(如Unity AssetBundle)、全球分发网络(CDN)与安全热更新策略三者协同。AssetBundle提供资源隔离与依赖管理能力,CDN保障低延迟高可用下载,而热更新策略则决定版本控制、灰度发布与异常恢复的工程鲁棒性。该方案广泛应用于中重度游戏、大型工具类App及需要频繁内容迭代的商业项目,直接提升次日留存、过审成功率与用户在线时长

weixin_29762151的博客 353

欧姆龙 CJ1W-SCU模块使用通配符+结束码实现非固定长度数据的接收

实验设备:CJ2M-CPU33、CJ1W-SCU21、XW2Z-200T 实验目的:了解 CJ1W-SCU 通配符使用 1.硬件接线: CJ1W-SCU21单元号拨码置于8,使用串口1(232口)。 2.软件设置: ① 新建工程,选择PLC型号CJ2M-CPU33,切换到编程模式,如下图: 、 ② 创建I/O并进行相关配置,如下图: ③ 设置为用户设置,协议宏模式,8位数据位,2位停止位,偶校验9600波特率,如下图: 、 ④ 打开CX-Protocal软件,新建工程: .

weixin_42118352的博客 1984

无涯教程-SQLite - Triggers(触发器)

SQLite触发器是事件驱动的操作或数据库回调函数,当在指定的表上执行INSERT,UPDATE和DELETE语句时,将自动调用该函数。触发器的主要任务包括执行业务规则,验证输入数据以及保留审核跟踪。

无涯教程 1065

ThingsBoard集群部署之k8s

今天终于有时间去搞这个啦,拖了很久了,一直没时间,因为我本地没有那么多机器资源,开虚拟机不够,如果租用阿里云服务器,需要有充值的时间,因为这个费用是按小时付费,需要有连贯的时间来搞才行,今天恰好有时间,就开始搞了,弄成功搞出来了,特地写博客记录下来。

AldrichEugene 1173

SQL Server CLR全攻略

CLR介绍和配置 Microsoft SQL Server 现在具备与 Microsoft Windows .NET Framework 的公共语言运行时 (CLR) 组件集成的功能。CLR 为托管代码提供服务,例如跨语言集成、代码访问安全性、对象生存期管理以及调试和分析支持。对于 SQL Server 用户和应用程序开发人员来说,CLR集成意味着您现在可以使用任何.NET Framework

u011916661的专栏 1663

LightGBM之LGBMRegressor()参数详解以及调参

LightGBMLight Gradient Boosting Machine)是一种梯度提升框架,它使用决策树作为基学习器。LightGBM 可以说是在 XGBoost 上做的优化。LightGBM 为高效并行计算而生,它的 Light 体现在以下几个点上:更快的训练速度更低的内存使用支持单机多线程,多机并行计算,以及 GPU 训练能够处理大规模数据。

我走的每一步都算数 3745

OpenClaw 预置技能完全指南

OpenClaw 技能(Skills)是扩展 AI 助手能力的插件系统。🔐 管理密码和敏感信息(1Password)📝 操作 Apple Notes 和 Reminders🔍 实时搜索互联网(Brave Search)🎨 生成和编辑图片(Nano Banana Pro)📧 收发邮件(Himalaya)🏠 控制智能家居(OpenHue、Eight Sleep)💬 发送消息(iMessage、WhatsApp、Slack)🎵 控制音乐播放(Spotify、Sonos)

Maynor的博客 1702

sqlserver调试clr程序集

选择附加到进程调试,勾选显示所有用户的进程,选择sqlserver.exe进程,打好程序集的断点,基于sqlserver触发clr程序集,即可中止到相关断点处。

Learn_change_myself的博客 829

南方电网专业面试题(电气类-继电保护)(目录)

南方电网专业面试题(电气类-继电保护)(目录) 这些面试题围绕继电保护的基本概念、工作原理、分类、性能要求,以及变压器、断路器、母线保护、自动重合闸等电力系统关键设备的保护机制和操作原则展开,旨在评估应聘者对电力系统保护和控制策略的深入理解和实际应用能力。

weixin_44808274的博客 2158

[翻译]在SQL Server中使用CLR调用.NET方法 【转】

原文地址:http://www.aspnetlibrary.com/articledetails.aspx?article=Using-CLR-to-access-.NET-functions-in-SQL-Server [翻译]在SQL Server中使用CLR调用.NET方法 原文发布日期:2007.05.17 作者:Mark Smith 翻译:webabcd ...

weixin_34289454的博客 93

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

[翻译]在SQL Server中使用CLR调用.NET方法(转)

 转自 http://www.cnblogs.com/webabcd/archive/2007/07/01/802239.html介绍我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法。按照微软所述,通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显著地增强

学海无涯 320

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

在SQL Server中使用CLR调用.NET方法

http://www.cnblogs.com/webabcd/archive/2007/07/01/802239.html 原文地址:http://www.aspnetlibrary.com/articledetails.aspx?article=Using-CLR-to-access-.NET-functions-in-SQL-Server [翻译]在SQL Server中使用CLR调用.N...

weixin_34290000的博客 110

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Yukon(SQL Server 2005) CLR 基本架构 (翻译)

Yukon CLR 基本架构 概述 随着SQL Server “Yukon” Beta1(也许也有人说:SQL Server2005)的推出,人们发现微软在Yukon中集成了非常多的新功能,其中最引人瞩目的是在数据库引擎中集成了对Windows .NET Framework Common Language Runtime (CLR 公用语言运行环境)的支持。在2000年7月的专

4889

在Sql 2005中使用.Net CLR存储过程(.NET CLR Stored Procedure in SQL2005)

英文出处:http://daron.yondem.com/PermaLink.aspx?guid=b7ee0be4-a5f3-49c3-b5f0-5ee02512290b在外包公司做了三个月了,英文稍微有一点进步,能看懂相对简单的文章了,今天正好遇到一个关于VS CLR存储过程的问题,没有找到中文的解决方案,特翻译此文章,第一次翻译,很多不对之处请批评指正。(一些英文没有按照原文翻译,不重要的省略

1099

在SQL SERVER 2005中调用Web Service

在SQL SERVER 2005中调用Web Service原文:Nico Jacobs出处:U2U nv/sa http://www.u2u.net/Article.aspx?ART=WebServicesinSQL05改编,翻译:刘凡 liufan76@msn.com(译者注:本人根据VS2005 RTM版和SQL SERVER 2005对涉及到Beta环境的步骤说明进行了调整

liufan76的专栏 2246

CLR触发器引用WCF服务

这是本人第一次翻译文章,希望和大家一起学习。不当之处,多多请教!这篇文章通过创建一个项目实例演示如何在SQL2005中创建CLR触发器并和WCF服务相联系实现您的设计,详细介绍了所有必要的步骤。文中不仅介绍了WCF更介绍了在SQLServer2005中如何使用WCF。  运行环境:VS 2005, WCF extensions for VS2005, .NET 3.0

xuejinyoulan的专栏 2183

转载:在SQL SERVER 2005中调用Web Service

在SQL SERVER 2005中调用Web Service 原文:Nico Jacobs 出处:U2U nv/sa http://www.u2u.net/Article.aspx?ART=WebServicesinSQL05 改编,翻译:刘凡 liufan76@msn.com (译者注:本人根据VS2005 RTM版和SQL SERVER 2005对涉及到Beta环境的步骤说明进行了调整...

weixin_30346033的博客 176

使用asp.net 2.0和SQL SERVER 2005构建多层应用

导读: 最近新编译和改编的一篇关于asp.net 2.0的文章,对老外的文章,我一向原则是取其精华,尽量翻译的简单通俗,不象中文MSDN那样不知所云。原文见 http://dev.yesky.com/msdn/297/2094297.shtml         随着.net 2.0的发布,将会使得使用asp.net 2.0来构建的web应用越来越容易。使用asp.net 2.0和sql serve

1171
上一篇: 新瓶旧酒ASP.NET AJAX(8) - 客户端脚本编程(Sys.Net命名空间下的WebRequestManager、WebRequest、WebRequestExecutor和XMLHttpExecutor)
下一篇: 新瓶旧酒ASP.NET AJAX(9) - 客户端脚本编程(Sys.Net命名空间下的WebServiceProxy、WebServiceError、Generated Proxy Classes以及调用WebService、PageMethod)
webabcd
博客等级 码龄17年 28粉丝 911原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值