首页  ·  知识 ·  数据库
学习SQLServer2005新特性第九讲:CLR集成
宋立桓  http://www.winmag.com.cn/forum/  MS-SQL  编辑:dezai  图片来源:网络
在以前版本的SQLServer中,数据库程序员在编写服务器端代码时只能使用T-SQL。借助CLR集成,数据库开发人员现在可以
 在以前版本的 SQL Server 中,数据库程序员在编写服务器端代码时只能使用 T-SQL。借助 CLR 集成,数据库开发人员现在可以执行仅使用 T-SQL 时不可能完成或很难完成的任务了。Visual Basic .NET 和 C# 都是现代的编程语言,它们提供对数组、结构化异常处理和集合的全面支持。与 T-SQL 所能支持的代码相比,开发人员能够利用 CLR 集成编写具有更复杂的逻辑、更适于计算任务的代码。生产安排算法的动态编程实现。这种算法的实现需要使用大量的一维和多维数组、CLR 编程语言提供了 T-SQL 中所没有的数据结构。与 T-SQL相比,CLR 编程语言之所以具有更好的性能,是因为托管代码是已编译的。对于涉及大量算术计算、字符串处理、复杂逻辑判断等的操作,托管代码的性能可能要优于 T-SQL 一个数量级。

以下是我的实验步骤:

Visual Studio 2005 将为 SQL Server 2005 提供深度的集成和支持。Visual Studio 2005 支持在 SQL Server 2005 中开发、部署和调试托管代码。它有一种新的项目类型,称为 SQL Server 项目
1.启动Visual Studio 2005,新建一个SQL Server项目
 
2. 接下来会提示你添加数据库引用(一个数据库连接),点击“添加新引用”按钮,输入信息以连接到你希望将SQL Server项目部署到的SQL Server2005服务器,这里服务名键入“ADV-SQL1\ADV_PRIMARY”,连接到pubs数据库,点击“确定”。 
 
3. 出现一个“要在此连接上启用SQL/CLR调试吗?”的消息框,选择“是”。
4. 在解决方案资源管理器窗口,右键单击“SqlServerProject1”,指向“添加”,再单击“用户定义的函数”。 在“名称”中,键入Function1.cs,再单击“添加”。

5. VS.Net 2005中的SQL Server 项目提供了SQL Server 数据库对象的代码模板,这使得开发人员能够轻松地开始为基于 CLR 的数据库对象如函数、过程和触发器、类型和聚合编写代码。 
Function1.cs的程序代码如下:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction]
     public static string ClrSplitter(string list, int element)
    {
        return list.Split('')[element];
    }
}

这里是写一个字符串的拆分,使用分号为分割符,element是索引,可以看到在T-SQL中需要很长代码的功能,在这里只需要一行代码

6.先保存一下项目,然后点击“生成”菜单下“生成SqlServerProject1”编译一下。这里我们再利用VS.Net2005提供的部署的功能,点击“生成”菜单下“部署SqlServerProject1”,就把它部署到数据库pubs中了。
 
7. 启动SQL Server Management Studio,连接到ADV_PRIMARY服务器实例,可以在对象资源管理器中看到这个数据库对象-用户自定义函数ClrSplitter


8. 新建查询,打开查询编辑器,在代码窗格中,键入 Transact-SQL 语句,你可以应用程序就可以像使用 T-SQL 一样使用它们,这里需要启用CLR  enable选项。

use pubs
--启用CLR enable选项
EXEC sp_configure 'show advanced options',Ƈ'
EXEC sp_configure 'clr enabled',Ƈ'
go
reconfigure
go
select dbo.ClrSplitter('Hello;world',1)
go
结果,如我们所愿:输出world字符串

本文作者:宋立桓 来源:http://www.winmag.com.cn/forum/
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的