zoukankan      html  css  js  c++  java
  • 初探Visual C# SQL CLR Database Project

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

     

  • 相关阅读:
    Java并发初识
    go交叉编译
    MRC与ARC混合开发配置
    Hibernate配置文件
    LEFT JOIN重复数据
    Ext.ViewPort布局
    Hibernate学习映射文件
    AjaxMethod方法
    DataBinder
    subsonic 获取记录数量
  • 原文地址:https://www.cnblogs.com/taoqianbao/p/2434537.html
Copyright © 2011-2022 走看看