2010-06-17 43 views
0

正在寻找针对当前正在面临的以下情形的意见/建议/链接。从SQL Server 2008执行.NET托管程序集 - Pro's,Con的和建议

的平台:

  • .NET 4.0 Web应用程序
  • SQL Server 2008中

任务:

  • 检修系统的一个组件,执行(相当)com基于特定用户活动进行复数运算,并更新数据库中的大量表。普通用户活动可能是“Bob”决定发布论坛主题。这导致(最终解决方案)需要查看各种因素(关于他所做的工作),然后根据查找值/比率以及数据库中的其他数据进行一些数学计算后,插入一些其他数据作为结果这些行动。

的选项:

好了 - 所以这里就是即时通讯思想。尽管在C#(LINQ-SQL)中执行此操作会容易得多,但它并没有多大意义,因为大部分计算都基于数据库中的值,并且随着时间的推移很难控制/优化/调试LINQ 。因此,我倾向于创建包含查找值(常量)的托管程序集(C#类库),并利用现有.NET BCL中的数学类。基本上我会公开一些可以被T-SQL存储过程调用的方法。

这对我来说有以下优点:

  1. 简单的数学。在.NET中执行复杂的数学运算,而在T-SQL中执行复杂的数学运算。没有脑子。 =)
  2. 从原始T-SQL抽象计算,可配置的“查找”值和业务逻辑。
  3. T-SQL只需要关心数据,简化存储过程并使其更容易维护。当它需要做数学时,它将委托给托管程序集。

所以,话说回来 - 我从来没有这样做过(从T-SQL调用assmembly .NET),经过一番google搜索网站最好我能想出是here,这是有用的,但已经过时。

那么 - 我在问什么?那么,首先 - 我需要一些关于如何实际执行此操作的更好参考。 “这个”是如何从SQL Server 2008中的T-SQL存储过程中调用C#.NET 4程序集。其次,谁在那里做了这些,你遇到了什么问题(如果有的话)?

认识到这可能很难提供一个“正确的答案”,所以生病尝试给它谁给我的答案与良好的联系和亲//con的列表/这个实现问题的答案。

干杯!

+0

为什么你不创建经典的Web应用程序与业务逻辑在C#层,它调用存储过程获取/ persist数据? – 2010-06-17 06:11:53

回答

1

关于SQL CLR的一个很好的介绍是Using CLR Integration in SQL Server 2005。 SQL Server CLR只会加载CLR 2.0,并且只能加载批准的库的一个子集,请参阅Supported .NET Framework Libraries。 .NET 3.5库(即.Linq)不受支持,但可以自行承担风险。但是你不会成功地将你的.Net 4程序集加载到SQL Server 2005,2008或2008 R2中。

+0

是的,你是对的 - 我试过(没有成功)。 – RPM1984 2010-06-18 04:53:26

0

运行管理组件withing的SQL Server是不是太复杂,只要按照微软样品

但总的来说,这是一个坏主意,你是混合责任,并可能是试图过早优化

只是要好的干净的代码,这使用没有复杂的系统的工作,而“下一个人”会感谢你