在CLR存储过程内部进行数据访问,是通过使用标准的ADO.NET类来完成的。开发人员会在应用程序层发现很多同样的没有用处的数据访问代码,这些代码会很轻易地转移到SQLCLR例程中去。当中间层的这些ADO.NET类需要使用T-SQL来访问数据的时候,在 CLR主机提供的环境中就会使用同样的类。
我要强调的是,从技术角度来说,不使用T-SQL来编写存储过程是可能的。那么有没有理由这么做呢?一种情况就是这是一个用来从普通文件或者网络服务中检索数据的CLR存储过程,并将数据格式设置为行集。这里可能就会用到不需要T-SQL的操作——但是这并不是对T -SQL存储过程能力的一个很好的比喻。
CLR存储过程vs. T-SQL存储过程
CLR存储过程和函数与T-SQL存储过程和函数相比,性能如何?
专家回答:
这里是用来比较T-SQL例程和CLR例程性能的一种常用的规则:用你的数据,在你的服务器上,测试两套配置,看看哪一个比较好。 就是说,许多人都运行过性能测试,一般的结果就是T-SQL在标准的CRUD(创建、读取、更新、删除)操作上表现要比好一点,而在复杂数学、字符串赋值和其他的超过数据访问的任务上,则是CLR的性能表现更好一点。 SQL Server 的专家Gustavo Larriera编辑了如下一些关于这个主题的有用链接:
在 SQL Server 2005中使用CLR Integration。
简单介绍在 SQL Server 2005中的 CLR Integration。
在 SQL Server 2005中对CLR 和T-SQL做出选择。
介绍 SQL Server 2005中的 CLR Integration。
SQL Server 闲谈: SQL Server 2005 Beta 2 CLR问题与回答。
数据库管理员的防御.NET。 ·用户自定义函数的性能比较。
如何在一个存储过程中使用另一个存储过程的结果
专家回答:
只要存储过程只产生了一个单个的结果,要在另外一个存储过程中使用这个存储过程产生的输出,这个技术是非常直接的。这个技术就是使用一个临时表来装载存储过程的巨额iguo,然后通过INSERT EXEC语句来执行这个过程并保存结果。一旦结果保留在临时表中了,他们就可以像使用其它表数据一样来使用它了。 这里是我们可能会复用的一个过程例子:
CREATE PROC usp_Demo_AllAuthors as
select * from pubs..authors
GO
第1页:在 SQL Server 数据库开发中的10大问题(1) 第2页:在 SQL Server 数据库开发中的10大问题(2)
© CopyRight 2008-2010, JSJGZ.CN, 计算机故障 Inc. All Rights Reserved
闽ICP备09000710号 增值电信业务经营许可证闽B2-20080004号 Rss订阅