SQL Server 2005 / 2008学习笔记
——之 SQL Server中调用C#程序
1、SQL Server 2005/2008 中CLR集成背景
T-SQL在执行普通查询通常效率是很高的,当然这个前提是书写的SQL语句比较规范。但是在有些时候,例如执行循环等方面,其效率以及书写的复杂程序就稍显低效和复杂。因此,我们通常都是获取基础的数据集,然后在程序中进行数据再加工。
在SQL Server2005以上(含2005)版本中,在可编程性下面有个程序集,它可以扩展C#程序来完成以前的操作以及功能实现。也就是说,使用编程方法来创建数据库对象。通过在SQL Server中托管CLR(称为CLR集成)可以创建数据库对象包括触发器、存储过程、用户定义函数、用户定义类型和用户定义聚合函数,从而为一些方案提高性能。
2、SQL Server 2005/2008 中CLR集成概述
2.1 集成的优势
编程模式:无论是语言还是功能实现都胜于T-SQL
安全性能:托管代码在数据库引擎承载的公共语言运行时环境中运行
自定义性:能够定义数据类型和聚合函数
2.2 集成的设计
可靠性:不能让代码执行损害数据库引擎进程完整性的操作,例如弹出请求用户响应的消息框或退出进程。用户代码应不能覆盖数据库引擎内存缓冲区或内部数据结构。
伸缩性:如果在SQL Server内运行的用户代码可以直接调用操作系统线程化基元,就不能很好地与SQL Server任务计划程序集成,可能降低系统的可伸缩性。
安全性:在数据库中运行的用户代码在访问诸如表和列的数据库对象时,必须遵守SQL Server身份验证和授权规则。
性能:在数据库引擎中运行的托管用户代码与在服务器外运行的同一代码相比,应具有同等的计算性能。从托管用户代码进行数据库访问没有本机Transact-SQL快。
2.3 集成的启动