SQL Server CLR 集成简介

公共语言运行库 (CLR) 是 Microsoft .NET Framework 的核心,为所有 .NET Framework 代码提供执行环境。 在 CLR 中运行的代码称为托管代码。 CLR 提供执行程序所需的各种函数和服务,包括实时 (JIT) 编译、分配和管理内存、强制类型安全性、异常处理、线程管理和安全性。

通过在 Microsoft SQL Server 中托管 CLR(称为 CLR 集成),可以在托管代码中编写存储过程、触发器、用户定义函数、用户定义类型和用户定义聚合函数。 因为托管代码在执行之前会编译为本机代码,所以,在有些方案中可以大大提高性能。

托管代码使用代码访问安全性 (CAS)、代码链接和应用程序域来阻止程序集执行某些操作。 SQL Server 使用 CAS 来帮助保证托管代码的安全,并避免操作系统或数据库服务器受到威胁。

本节只是为了提供足够的信息,以便开始使用 SQL Server CLR 集成编程,而并非为了提供完整的信息。 有关更多详细信息,请参见您正在使用的 SQL Server 版本的“SQL Server 联机丛书”版本。

启用
CLR 集成

默认情况下,Microsoft SQL Server 中禁用公共语言运行库 (CLR) 集成功能,必须启用才能使用通过 CLR 集成实现的对象。 要使用 Transact-SQL 启用 CLR 集成,请使用如下所示的 sp_configure 存储过程的 clr
enabled 选项:

sp_configure ‘clr enabled‘, 1
GO
RECONFIGURE
GO

可以通过将 clr enabled 选项设置为 0 来禁用 CLR 集成。在禁用 CLR 集成时,SQL Server 停止执行所有 CLR 例程并卸载所有应用程序域。

第一步 建立环境

首先我们要打开Sql2005的IDE,新建 一个数据库,这个过程 就不多说了,数据库名称 是 Text

下在我们打开VS2005 或是2008(选择.net2.0因为这里只支持2.0的CLR)新建项目

在这里跟新建其它项目就有很大不同的,我们要选择一个Office下的数据库,选择SqlServer项目 
名称为 SqlClrProject 位置您可以自己选择电脑上的任意位置就可以了,单击确定

在这里我们要选择一下自己的数据,如果你不是第一次的话那么会默认的列出所有选择过的数据库,而这里我的选择过了所以出现一个 已有的选择项,当然如果 你是第一次的话 是没有选择项目的,这时我们单击  添加新引用(A)...

相信这里大家都 很熟悉了吧,选择一下我们刚刚建好的数据库吧,

然后单击确定

在这里我们单击是就可以了,因为我们得启用它来调试我们下面的操作

新建好的项目结构如上图所显

因为我们这里要使用函数,所以我们右击项目---添加

我们可以看的到里面已经出了很多数据库中常用的对象了,

我们单击新建项也就是第一个

我们给函数名称改为StrCount意思就是统计一下输入的字符个数

我们选择的是用户定义的函数

好了单击添加就可以了,

系统会自动生成一段代码

代码

到这里我们的前期准备工作就完了,我们只要修改这个类就行了,

[Microsoft.SqlServer.Server.SqlFunction]

这句是表示在Sql中的对象类型

SqlFunction  就是函数

SqlProcedure  存储过程

SqlTrigger  触发器

还有其它的大家自己查看一下吧

第二步 部署自己定义函数

我们这个函数是用来计算字符长度的我把完成的代码放在下在面

代码

现在函数写好了,这个函数就不做过多的解释了, 因这这个只是得到字符串的长度这东西太基础了,呵呵

我们怎么样才能在Sql2005里使用我们这个函数呢?

其实很简单我们生成一下项目,生成成功之后,我们右击项目

单击部署项目,等部署成功就可以了。那我们部署的程序在那里呢,现在我们打开Sql2005IDE

找到如下图所示

我们会发现在Sql2005里的标题值函数里出现了一个我们自己定义的函数,那怎么使用他呢,很简单其实是跟我们平时使用的是一样的

我们新建查询

因为我们Sql默认的是关闭CLR功能的,我们需要用命令开启一下

看到如上图所显示的就表示 你的功能开启成功了,下面我们就可以自由的使用函数了,跟使用系统自己定义的函数是一样的,下面我统计几个大家可以看下图

这样一这样

这样就是利用sql的ClR执行c#程序了,是不是很方便,当然我们可以根据自己的需要把这个函数改的复咋一下,不过方法都是一样的像存储过程和触发器的实现原理都 也是这样的。

我加上一段,调试功能 是.net里用来解决问题最多的功能了,那CLR是否支持呢?答案是肯定的,只要我们在这个Text.Sql文件里打个段点就行了,因为在这个文件里执行的结果和数据库里的是一样的

代码

我们可以跟自己的Sql语句结合起来使用,就是用到我们自己定义的存储过程里这样可以把复咋的逻辑用c#代码来实现是不是感觉很方便,Clr是个好东西,他不仅仅只有这些,还有什么高级的功能 呢,我们下次博文接着说吧!!!

为了方便大家写代码我在这里加上

use Text

EXEC sp_configure ‘show advanced options‘,‘1‘;

go

EXEC sp_configure ‘clr enabled‘,‘1‘

go

reconfigure with override;

go

时间: 2024-12-06 03:03:57

SQL Server CLR 集成简介的相关文章

SQL Server CLR 使用 C# 自定义函数

原文:SQL Server CLR 使用 C# 自定义函数 一.简介 Microsoft SQL Server 2005之后,实现了对 Microsoft .NET Framework 的公共语言运行时(CLR)的集成.CLR 集成使得现在可以使用 .NET Framework 语言编写代码,从而能够在 SQL Server 上运行,现在就可以通过 C# 来编写 SQL Server 自定义函数.存储过程.触发器等.我最初的目的是因为在 SQL Server 数据库中遇到数字的十进制与十六进制的

SQL SERVER 开窗函数简介

在SQL SERVER 2005/2008支持两种排名开窗函数和聚集开窗函数. 以SQL SERVER中分面页为例,按时间顺序列出定单号. WITH OrderInfo AS ( SELECT ROW_NUMBER() OVER(ORDER BY OrderDate) AS Number, OrderID,CustomerID, EmployeeID,OrderDate FROM Orders (NOLOCK) ) SELECT Number,OrderID,CustomerID, Employ

SQL Server CLR 使用 C# 自定义存储过程和触发器

这一篇博客接着上一篇博客继续介绍 SQL CLR Stored Procedure 和 CLR Trigger, 上一篇博客介绍了 SQL CLR Function 的使用,以及 CLR 程序集的注册和 CLR Function 的注册. 我的上一篇博客:SQL Server CLR 使用 C# 自定义函数 四.CLR Stored Procedure 接下来在之前的项目选择添加新项,选择 SQL CLR C# 存储过程. public partial class StoredProcedure

资料:MVC框架+SQL Server 数据集成引擎

ylbtech-资料:MVC框架+SQL Server 数据集成引擎 1.返回顶部 1. 功能特点: MVC框架耦合性低视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可.因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则.模型是自包含的,并且与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则.如果把数据库从MySQL移植到Oracle.SQLServer,或者改变基于

翻译之:SQL Server统计信息简介

本文选自<Pro SQL Server Internals> 作者: Dmitri Korotkevitch 出版社: Apress 出版年: 2016-12-29 页数: 804 作者简介:Dmitri Korotkevitchis是微软SQL Server MVP和微软认证大师.作为应用程序和数据库开发人员.数据库管理员和数据库架构师,他具有多年使用SQL Server的经验.他专门从事OLTP系统在高负载下的设计.开发和性能调优.Dmitri经常在各种Microsoft和SQL PASS

SQL Server 2012 FileTables 简介

本文将介绍有关 SQL Server 2012 FileTables. 大家都知道像是 SQL Server 这类的关联式数据库擅长处理大量结构化数据,对于文件或目录这类型的非结构化数据的管理及查询,相对而言比较难以处理. 以一般网站应用程序开发为例,常常会需要提供使用者透过浏览器上传文件的功能,应用程序要如何记录这些文件的相关资讯,大致上都是采用这两种方法,一是只在 DBMS 中纪录文件名称.大小.类型等资讯,实际文件还是存放在文件系统当中,二是把上传的文件转成二进制后保存到 DBMS 中.

SQL Server CLR全功略之一---CLR介绍和配置

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

sql server版本特性简介、版本介绍简介

1.SQL Server 版本简介 1.1.sql server的版本信息 年    代 版    本 大版本号 1993年 SQL Server for Windows NT 4.21 1994年 SQL Server for Windows NT 4.21a 1995年 SQL Server 6.0 1996年 SQL Server 6.5 1998年 SQL Server 7.0 7.00 2000年 SQL Server 2000 8.00 2003年 SQL Server 2000 E

【转】SQL SERVER CLR存储过程实现

最近做一个项目,需要做一个SQL SERVER 2005的CLR的存储过程,研究了一下CLR的实现.为方便以后再使用,在这里总结一下我的实现流程,也供对CLR感兴趣但又不知道如何实现的朋友们做一下参考,如果有不同意见,望多指教.在这里先以实现CLR存储过程为例子来进行说明. 1.首先,启用数据库的CLR功能 sp_configure 'clr enabled', 1;          GO          RECONFIGURE;          GO 2.即然是要创建CLR存储过程,那么