我有一个C#类库的工作流程类应用程序的业务逻辑,但在图书馆每个月一定过程的结束需要调用,我以为来调用这个计划执行的理想机制是使用SQL Server代理(SQL作业最好,althought我很开放,甚至进入地狱SSIS如果绝对必要),但问题是我如何调用该应用程序库的过程中从SQL作业?
应用程序库也从asp.net页中使用的,因此它通常具有配置输入和输出数据库一个Web应用程序上下文(web.config中)
据我所知,步骤都或多或少
1)嵌入在SQL Server CLR组件类库,强密钥标志和部署2)调用库
我不明白的事情是,部署这种CLR组装时,与Web应用程序上下文中会发生什么? 我如何准确地去部署与此时,相应的app.config的CLR? 我一定要重新部署CLR,如果我需要更改连接字符串?
我不确定也因为CLR需要连接回其调用它(用于读取和写入表目的)的数据库,但我猜一个人要加倍小心,避免自调用,诸如此类的事情。
首先,这个帖子在“使用SSIS”结束:-P
只要您的库中包含的链接System.Web.dll中,我不认为你可以在SQL Server的SQLCLR组件进行注册。 SQLCLR组装都非常有限,不能包含任何引用。
你可以将你的业务逻辑的前端特定部分到一个单独的表示层库。 这通常是比混合业务逻辑和表示类,如Web应用程序上下文更好的解决方案。 之后,你可以尝试将集部署到SQL Server。
现在,您可以创建第二个SQLCLR库,包含协调业务对象的.NET存储过程。
不过,我实在看不出SQLCLR的优势,在这里。 它需要在源代码中的巨大变化,并导致了整个应用程序有一些限制。
我的个人喜好将是要么使用SSIS包。 在这里,您可以参考其他任何DLL和使用其功能。 或写将由SQL代理启动一个简单的.NET控制台应用程序。 在这两种情况下,执行几乎相等。
SQLCLR是特别设计用来处理击中的可能(和提示)T-SQL的功能墙纯粹的数据库特定的任务。
文章来源: SQL Server CLR to embed business logic and schedule execution with SQL Server Agent