• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

初探VisualC#SQLCLRDatabaseProject

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
Visual C# SQL CLR Database Project

有了sqlserver CLR集成后,这一切似乎就变了。什么是CLR ,到底什么是CLR集成?先看看MSDN的解释吧。

通过在 Microsoft SQL Server 中托管 CLR(称为 CLR 集成),可以在托管代码中编写存储过程、触发器、用户定义函数、用户定义类型和用户定义聚合函数。 因为托管代码在执行之前会编译为本机代码,所以,在有些方案中可以大大提高性能。
通俗点讲,就是sqlserver 2005 版本之后,数据库引擎中加入了 .NET Framework 的公共语言运行时 (CLR) 组件,可以更方便和.NET应用程序交互。

示例:

新建一个项目文件,如下图,VS会自动生成一些文件。 

 

 我的环境是:VS2010,SQLSERVER2008

在部署过程中,也遇到了一些麻烦。

所以在 文件 

PreDeployScript.sql 修改如下:

 

 

 

 

--查看系统配置

 

 

 

 

SELECT * FROM sys.configurations
ORDER BY name
GO
--启用clr
sp_configure 'clr enabled',1
go
RECONFIGURE;
GO



--ALTER DATABASE 兼容级别 (Transact-SQL) 
ALTER DATABASE Northwind 
SET COMPATIBILITY_LEVEL = 90
 

 

 另外需要将.net framework改为 2.0(具体请查看你的SQL SERVER支持的.NET版本)

 using System;

using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;


public partial class StoredProcedures
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void StoredProcedure1()
    {
        SqlConnection conn = new SqlConnection(@"context connection=true");
        try
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand("SELECT * FROM dbo.Categories", conn);
            SqlDataReader dr = cmd.ExecuteReader();

            SqlContext.Pipe.Send(dr);
        }
        catch (SqlException ex)
        {
            conn.Close();
        }
    }
};

 

简单的例子做完了,优点是可想而知的。那到底啥时候应用CLR,啥时候写T-sql呢?我觉得具体要根据实际业务需求和应用场景去判断了。

根据有些微软方面的专家提示,在下面几种情况下,应该考虑使用CLR: 
SQL中涉及大量的逻辑判断和逻辑运算。比如需要在数据库级别自定义加密算法,解密算法等。 
T-SQL无法处理需求。比如需要在SQL中进行正则表达式的判断等。 
逻辑判断或者循环分支过于复杂,有时需要使用大量游标进行处理(也不一定使用游标就会变慢,关键看敲代码的人)。

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap