博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初探Visual C# SQL CLR Database Project
阅读量:5749 次
发布时间:2019-06-18

本文共 1511 字,大约阅读时间需要 5 分钟。

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中进行正则表达式的判断等。 
逻辑判断或者循环分支过于复杂,有时需要使用大量游标进行处理(也不一定使用游标就会变慢,关键看敲代码的人)。

 

 

 

转载于:https://www.cnblogs.com/taoqianbao/archive/2012/04/06/2434537.html

你可能感兴趣的文章
自动化测试之WatiN(2)
查看>>
关于完成生鲜电商项目后的一点总结
查看>>
noip2012 普及组
查看>>
第二阶段 铁大Facebook——十天冲刺(10)
查看>>
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>
多项式前k项和java_多项式朴素贝叶斯softmax改变
查看>>
java数组只能交换0下标和n_编程练习-只用0交换排序数组
查看>>
centos7安装mysql视频教程_centos7安装mysql(完整)
查看>>
php图片赋值,php如何优雅地赋值
查看>>
【探索HTML5第二弹01】HTML5的前世今生以及来世
查看>>
Failed to connect to remote VM. Connection refused. Connection refused: connect
查看>>
freeze
查看>>
JS时间转时间戳,时间戳转时间。时间显示模式。
查看>>
SAP HANA存储过程结果视图调用
查看>>
设计模式 ( 十八 ):State状态模式 -- 行为型
查看>>
OracleLinux安装说明
查看>>
nova分析(7)—— nova-scheduler
查看>>
Entity Framework 实体框架的形成之旅--Code First模式中使用 Fluent API 配置(6)
查看>>
OpenMediaVault 搭建git,ssh无法连接问题
查看>>
java多线程之:Java中的ReentrantLock和synchronized两种锁定机制的对比 (转载)
查看>>