简介
Microsoft 通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显著地增强了数据库编程模型的功能。它支持用任何 CLR 语言(特别是 Microsoft Visual C# .NET、Microsoft Visual Basic .NET 和 Microsoft Visual C++)编写过程、触发器和函数。同时,它还提供了扩展数据库系统中的类型系统和聚合函数的功能,方法是允许应用程序创建它们自己的数据类型和聚合函数。
CLR 集成概述
Visual Studio 2005 支持在 SQL Server 2005 中开发、部署和调试托管代码。有一种新的项目类型(称为 SQL Server 项目),它允许开发人员在 SQL Server 中开发、部署和调试例程(函数、过程和触发器)、类型和聚合。
构建和部署
SQL Server 项目提供了代码模板,这使得开发人员能够轻松地开始为基于 CLR 的数据库例程、类型和聚合编写代码。该项目还允许添加对数据库中其他的程序集的引用。在构建项目时,可以将其编译成一个程序集。部署此程序集可以将程序集的二进制文件上载到与该项目相关联的 SQL Server 数据库中。部署操作还自动创建在数据库的程序集中定义的例程、类型和聚合,方法是使用在代码中定义的自定义属性(SqlProcedure、SqlFunction 和 SqlTrigger 等等)。它还上载与该程序集相关联的源代码和 .pdb 文件(调试符号)。
调试
对于任何平台来说,调试都是开发人员体验的基本部分。SQL Server 2005 和 Visual Studio 2005 为数据库编程人员提供了这些功能。调试 SQL Server 2005 对象的关键部分在于其易于安装和使用。调试到运行 SQL Server 的计算机的连接在很大程度上同调试传统操作系统中运行的进程的方式一样。调试器的功能不会受到客户端到服务器的连接类型的影响。这样就可以调试表格数据流 (TDS) 和 HTTP 连接。而且,还可以跨语言进行无缝调试。因此,如果有一个调用 CLR 存储过程的 T-SQL 存储过程,调试会允许您从 T-SQL 过程进入到 CLR 过程。
在这里我只是简单的介绍一下吧,其实还有很多这方面的知识,大家可以到微软的官方网站上去查看一下我给个链接吧方便查找
http://www.microsoft.com/china/msdn/library/data/sqlserver/sqlclrguidance.mspx?mfr=true这上面说的很细,包括Clr和Xp的特性也有介绍
在这里我分享一下我经常使用的一些功能 吧,CLR 集成到低是做什么的呢?大家平时在数据库里写的存储过程 ,函数,还有触发器等这些东西都 是存在于数据库里的,不能跟前台的程序代码发生关系,Clr大家都 知道是支持语言的基本环境,有了他,我们就可以在Sql里部署我们用c#或是VB编写的代码了,也就是说我们在c#里写一个函数可以在Sql里直接被执行,大家是不是感觉这样很神奇呢?如果真的是这样的话,那以后数据库里再有什么复咋的逻辑直接用c#代码写一定会很方便,下面我就一个一个的很大家分享一下吧,我们先从函数入手吧
CLR中的函数
第一步 建立环境
首先我们要打开Sql2005的IDE,新建 一个数据库,这个过程 就不多说了,数据库名称 是 Text
下在我们打开VS2005 或是2008(选择.net2.0因为这里只支持2.0的CLR)新建项目
在这里跟新建其它项目就有很大不同的,我们要选择一个Office下的数据库,选择SqlServer项目 名称为 SqlClrProject 位置您可以自己选择电脑上的任意位置就可以了,单击确定
在这里我们要选择一下自己的数据,如果你不是第一次的话那么会默认的列出所有选择过的数据库,而这里我的选择过了所以出现一个 已有的选择项,当然如果 你是第一次的话 是没有选择项目的,这时我们单击 添加新引用(A)...
相信这里大家都 很熟悉了吧,选择一下我们刚刚建好的数据库吧,
然后单击确定
在这里我们单击是就可以了,因为我们得启用它来调试我们下面的操作
新建好的项目结构如上图所显
因为我们这里要使用函数,所以我们右击项目---添加
我们可以看的到里面已经出了很多数据库中常用的对象了,
我们单击新建项也就是第一个
我们给函数名称改为StrCount意思就是统计一下输入的字符个数
我们选择的是用户定义的函数
好了单击添加就可以了,
系统会自动生成一段代码
[Microsoft.SqlServer.Server.SqlFunction]
这句是表示在Sql中的对象类型
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->usingSystem;
usingSystem.Data;
usingSystem.Data.SqlClient;
usingSystem.Data.SqlTypes;
usingMicrosoft.SqlServer.Server;
publicpartialclassUserDefinedFunctions
{
//表示注册为Sql中的函数
[Microsoft.SqlServer.Server.SqlFunction]
publicstaticSqlStringStrCount()
{
//在此处放置代码
returnnewSqlString("Hello");
}
};
到这里我们的前期准备工作就完了,我们只要修改这个类就行了,
SqlFunction 就是函数
SqlProcedure 存储过程
SqlTrigger 触发器
还有其它的大家自己查看一下吧
第二步 部署自己定义函数
我们这个函数是用来计算字符长度的我把完成的代码放在下在面
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->usingSystem;
usingSystem.Data;
usingSystem.Data.SqlClient;
usingSystem.Data.SqlTypes;
usingMicrosoft.SqlServer.Server;
publicpartialclassUserDefinedFunctions
{
//表示注册为Sql中的函数
[Microsoft.SqlServer.Server.SqlFunction]
publicstaticstringStrCount(stringstr)
{
//返回字符串的长度
returnstr.Length.ToString();
}
};
现在函数写好了,这个函数就不做过多的解释了, 因这这个只是得到字符串的长度这东西太基础了,呵呵
我们怎么样才能在Sql2005里使用我们这个函数呢?
其实很简单我们生成一下项目,生成成功之后,我们右击项目
单击部署项目,等部署成功就可以了。那我们部署的程序在那里呢,现在我们打开Sql2005IDE
找到如下图所示
我们会发现在Sql2005里的标题值函数里出现了一个我们自己定义的函数,那怎么使用他呢,很简单其实是跟我们平时使用的是一样的
我们新建查询
因为我们Sql默认的是关闭CLR功能的,我们需要用命令开启一下
看到如上图所显示的就表示 你的功能开启成功了,下面我们就可以自由的使用函数了,跟使用系统自己定义的函数是一样的,下面我统计几个大家可以看下图
这样一这样
这样就是利用sql的ClR执行c#程序了,是不是很方便,当然我们可以根据自己的需要把这个函数改的复咋一下,不过方法都是一样的像存储过程和触发器的实现原理都 也是这样的。
我们可以跟自己的Sql语句结合起来使用,就是用到我们自己定义的存储过程里这样可以把复咋的逻辑用c#代码来实现是不是感觉很方便,Clr是个好东西,他不仅仅只有这些,还有什么高级的功能 呢,我们下次博文接着说吧!!!
分享到:
相关推荐
使用 SQL Server 2005中的 CLR 集成
01.SQL Server 2005中的CLR_Demo
Sqlserver2005 CLR数据库对象开发指南
SQL Server 2005的CLR集成.pdf
详细介绍SQL/CLR,让你用c#更轻松的来写存储过程,触发器等等
不多说,CLR Types for Microsoft SQL Server 2014,64位,支持 ReportViewer 2015。 找了好久才找到,真的来之不易,象征性收1个积分。
SQL Server 2005中的CLR应用研究.pdf
该书解释并比较了SQL Server 2000和SQL Server 2005在数据库开发相关问题上的解决方案,深入讨论了SQL Server 2005中新增的T-SQL编程特性,包含了大量的代码示例、表示例和逻辑难题以帮助数据库开发人员和管理员理解...
关于sqlserver2008 clr集成 资源源于不但搜索,自由源于不但努力
microsoft system clr types for sql server 2012 想安装report viewer2012需要用到这个
CLR扩展DLL 在MS-SQL Server 环境中实现文件、目录操作,程序使用VS2010编写,语言Vb.net。运行起来飞一般的感觉! 包含文件、目录操作的常用20多个函数,支持网络访问文件。 我经过5~6年的使用,实现用SQL管理复杂...
SQL SERVER CLR 的讲解,如果配置CLR,及一个CLR 库的文档 ,可以针对例子,编写自已的CLR 函数.
必须SQLSERVER2005以上,支持CLR函数才行。 其中Concatenate是拼接字符串的聚合函数,MaxOther是某列最大时获取另外一列值的聚合函数,MinOther则反之。 Regex开头的函数是正则相关的函数。GetCodeTable是拆分字符串...
搭建WSUS使用报告功能,需要安装 MICROSOFT REPORT VIEWER 2012 的 ReportViewer.msi和 Microsoft System CLR Types for Microsoft SQL Server 2012 的 SQLSysClrTypes.msi ,找了一圈获得能用的,好东西分享一下。
microsoft system clr types for sql server 2012 中文 microsoft system clr types for sql server 2012.7z
Microsoft System CLR Types For SQL Server 2012 /SQLSysClrTypes.msi
使用Microsoft SQL Server 2005和这本权威书籍中所包含的广泛信息,可以构建功能强大的企业级数据库程序。本书介绍了如何开发服务器端和客户端数据库应用程序,以及如何分析业务智能数据。还深入介绍了所有的全新...
部署查看Windows SQL服务器报表的时候会用到
找了好久的microsoft system clr types for sql server 2012/2014,为了rdlc可编辑需要这个插件
未及时包括在本自述文件中的任何有关 SQL Server 2005 和 SQL Server Express 的信息都将发布到 Microsoft 知识库文章 907284 中。 [顶部] 3.0 安装问题 本部分详细介绍此版本中的安装问题。 3.1 现有的 SQL ...