2010-06-17 71 views
1

我有一个类似于工作流的应用程序在C#类库中的业务逻辑,但是在每个月的月底,库中的某些过程需要被调用,我认为调用这个计划执行的理想机制是使用Sql服务器代理(sql作业最好,尽管我打开即使进入SSIS地狱,如果它绝对需要),但问题是我如何调用过程sql作业中的应用程序库?SQL Server CLR嵌入SQL Server代理的业务逻辑和时间表执行

应用程序库也从asp.net页中使用的,因此它通常具有配置输入和输出数据库

我明白,步骤是一个Web应用程序上下文(web.config中)或多或少

1)嵌入到SQL Server的CLR组件类库,强大的重要标志和部署 2)调用库

我不明白的事情是,部署这样的CLR组件时,孰与发生Web应用程序上下文我该如何准确地部署与合适的app.config CLR?如果我需要更改连接字符串,是否必须重新部署CLR?

我也不确定,因为CLR需要连接回数据库调用它(用于读写表的目的),但我猜测必须格外小心以避免自我调用,并且这种事情。

+0

没有关于这个的想法? – lurscher 2010-06-24 20:11:55

回答

1

首先,这个帖子在“使用SSIS” :-P

只要您的库中包含的链接System.Web.dll中,我不认为你可以在SQL注册它结束服务器作为SQLCLR组件。 SQLCLR组件非常有限,不能包含任何参考。

您可以将业务逻辑的前端特定部分移动到单独的表示层库中。这通常比混合业务逻辑和表示类(如Web应用程序上下文)更好。之后,您可以尝试将您的程序集部署到SQL Server。

现在您可以创建第二个SQLCLR库,其中包含用于编排业务对象的.NET存储过程。

但是,在这里我并没有真正看到SQLCLR的优点。这将需要对源代码进行大量更改,并对整个应用程序造成一些限制。

我的个人喜好为 可以使用SSIS包。在这里你可以引用任何其他的DLL并使用它的功能。或者编写一个简单的.NET控制台应用程序,它将由SQL Agent启动。 在这两种情况下,实现几乎相等。

SQLCLR特别设计用于处理纯数据库特定的任务,这些任务碰到了可能的(和暗示的)T-SQL特性的壁垒。

+0

确实可以将System.Web和许多其他FCL库部署到SQL,但只有2.0/3.0/3.5 - 不是4.0 – abatishchev 2010-07-23 06:03:27

+0

很好的答案,谢谢。那就是SSIS – lurscher 2010-07-24 14:01:23