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

     

  • 相关阅读:
    【codecombat】 试玩全攻略 第九关 循环又循环
    【codecombat】 试玩全攻略 第十三关 已知敌人
    【codecombat】 试玩全攻略 第十一关 再次迷宫经历
    【codecombat】 试玩全攻略 第六关 cell commentary
    【codecombat】 试玩全攻略 第八关 火舞
    【codecombat】 试玩全攻略 第十二关 恐惧之门
    【codecombat】 试玩全攻略 第十四关 已知敌人
    苹果apns推送总结
    Xcode 提升速度小技巧
    UITextField 限制输入字数
  • 原文地址:https://www.cnblogs.com/taoqianbao/p/2434537.html
Copyright © 2011-2022 走看看