SQL2005 CLR Hosting能带来什么?
2004-08-04 18:19
239 查看
先看看怎么写SQL2005中的托管程序:
[SqlFunction(DataAccess = DataAccessKind.Read)]
public static string ReportSqlVersion()
{
SqlCommand cmd = SqlContext.GetCommand();
cmd.CommandText = "select @@version";
return (string)cmd.ExecuteScalar();
}
上面是最简单的返回版本号的Function. 和ADO.net一样,通过Command执行查询。看看System.Data.SqlServer.SqlCommand的定义:
public sealed class SqlCommand : System.Data.Sql.ISqlCommand, System.Data.IDbCommand, System.IDisposable
居然也实现了System.Data.IDbCommand!
另外一个向客户端返回结果集的方法:
ISqlReader rdr = cmd.ExecuteReader();
SqlContext.GetPipe().Send(rdr);
看起来SQL2005中的托管程序没什么不同,只是通过System.Data.SqlServer包来读取数据库。
如果把T-SQL变成托管代码执行,然后把数据接力给外部的APP程序,看起来很罗嗦。
以前写SP的主要理由是性能,现在用了CLR之后性能大打折扣,那SQL2005中加入CLR的理由是什么呢?
我能想到的理由,欢迎各位补充:
1. 语言的通用性,抛弃蹩脚的T-SQL
2. 语言的功能(比如错误处理)
3. 动态调试
4. 利用辅助工具包,大量API
5. 把原有中间层业务逻辑全部转移到SP中(中小应用),(可选)发布成WS
缺点:
1. 负载扩充不容易
2. 瓶颈分析有困难
以后WebApp中不需要业务层封装,直接调用SP。
用Oracle也能用Java写SP封装业务逻辑,但是SQL2005中还能把他们直接发布成WS,跟SmartClient真是绝配。
[SqlFunction(DataAccess = DataAccessKind.Read)]
public static string ReportSqlVersion()
{
SqlCommand cmd = SqlContext.GetCommand();
cmd.CommandText = "select @@version";
return (string)cmd.ExecuteScalar();
}
上面是最简单的返回版本号的Function. 和ADO.net一样,通过Command执行查询。看看System.Data.SqlServer.SqlCommand的定义:
public sealed class SqlCommand : System.Data.Sql.ISqlCommand, System.Data.IDbCommand, System.IDisposable
居然也实现了System.Data.IDbCommand!
另外一个向客户端返回结果集的方法:
ISqlReader rdr = cmd.ExecuteReader();
SqlContext.GetPipe().Send(rdr);
看起来SQL2005中的托管程序没什么不同,只是通过System.Data.SqlServer包来读取数据库。
如果把T-SQL变成托管代码执行,然后把数据接力给外部的APP程序,看起来很罗嗦。
以前写SP的主要理由是性能,现在用了CLR之后性能大打折扣,那SQL2005中加入CLR的理由是什么呢?
我能想到的理由,欢迎各位补充:
1. 语言的通用性,抛弃蹩脚的T-SQL
2. 语言的功能(比如错误处理)
3. 动态调试
4. 利用辅助工具包,大量API
5. 把原有中间层业务逻辑全部转移到SP中(中小应用),(可选)发布成WS
缺点:
1. 负载扩充不容易
2. 瓶颈分析有困难
以后WebApp中不需要业务层封装,直接调用SP。
用Oracle也能用Java写SP封装业务逻辑,但是SQL2005中还能把他们直接发布成WS,跟SmartClient真是绝配。
相关文章推荐
- OpenCms7.0.2为我们“带来/修正”了些什么?
- Windows Azure: 给企业带来了什么?
- VMware ESX Server能为企业带来什么?
- 王哲:Cocos2d-x 3.0引擎带来了什么?
- 大数据给企业电商带来了什么好处
- OPC给我们带来了什么?
- HTML5将给我们带来什么
- new ipad带来了什么?
- 什么能带来智能家居智能化酒店?
- 【译】Node.js给前端带来了什么
- 从头认识java-13.11 对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题?
- 各取所需 看看ERP为不同员工带来了什么
- 人口流向逆转带来什么变化(zz)
- Delphi2009带来了什么?
- “馅饼”小电脑给我们带来什么商机?
- Android签名有什么作用-apk签名可以带来的好处
- 3G移动网络,给WAP带来什么?
- 全球运维大会GOPS | 加长版优维老王演讲带来是什么体验
- 缓存一致性协议是什么协议,缓存一致性协议是怎么给隐蔽信道带来便利的。。。。