Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从ASP.NET异步执行SSIS或DTS包_C#_Asp.net_Sql Server_Ssis - Fatal编程技术网

C# 从ASP.NET异步执行SSIS或DTS包

C# 从ASP.NET异步执行SSIS或DTS包,c#,asp.net,sql-server,ssis,C#,Asp.net,Sql Server,Ssis,我需要从ASP.NET C#页面异步加载和执行SSIS或DTS包,单击按钮,并在执行结束时报告成功或失败,如果失败,则应向用户显示异常的详细信息。它需要异步,因为作业可能需要很长时间才能完成。如果用户愿意,还应该能够在包运行时取消包的执行。还需要并行执行多个包,并跟踪每个包的进度。这是可能实现的还是太复杂而无法从ASP.NET实现?请让我知道,如果你有任何样本代码或链接,这样做。谢谢。 一个你可以考虑的解决方案是使用SQLServer作业。您可以将包设置为作业(有或没有运行计划)。通过在msdb

我需要从ASP.NET C#页面异步加载和执行SSIS或DTS包,单击按钮,并在执行结束时报告成功或失败,如果失败,则应向用户显示异常的详细信息。它需要异步,因为作业可能需要很长时间才能完成。如果用户愿意,还应该能够在包运行时取消包的执行。还需要并行执行多个包,并跟踪每个包的进度。这是可能实现的还是太复杂而无法从ASP.NET实现?请让我知道,如果你有任何样本代码或链接,这样做。谢谢。

一个你可以考虑的解决方案是使用SQLServer作业。您可以将包设置为作业(有或没有运行计划)。通过在msdb系统数据库中运行存储过程和查询,可以启动、取消、获取作业状态和故障信息。您可以从ASP.NET C#页面运行过程和查询


在作业中运行SSIS/DTS包是一种常见的方法。而且,此解决方案还允许您使用Management Studio来管理作业。

您可以使用Rhino ETL而不是SSI。这是一个成熟的ETL库,允许您在C#中编写ETL作业。

我通过将用户请求排队以在表中执行DTS/SSIS包,并在windows服务中读取它们,然后通过使用ThreadPool类生成线程并行执行来解决此问题。它工作得很好。谢谢这种方法的缺点是轮询,使其成为事件驱动的,创建一个WCF服务并将其托管在windows服务中是最好的,我将在下一步尝试。谢谢你的回复。顺便说一句,我不能使用sql server代理,根据我公司的it政策,这是不允许的。

如果您有多个池,那么您需要一个公共数据库表和一个单独的类来处理与所有请求的池并行执行。这不是一个容易的任务,我们有一个这样的任务,但我们有很多小时的工作和它的非常习惯。谢谢你的答复,但这是如何工作的?SSIS/DTS包存储在Web服务器上。我需要在Web服务器上创建作业吗?如果是,我是否需要在其上安装SQL组件以创建作业(不确定我公司的服务器策略是否允许此操作)?存储过程如何知道位于其他位置的作业?是否确定SSI/DTS位于Web服务器上?它们应该是数据库的一部分……是的,SSIS/DTS包不在数据库中,而是存储在Web服务器上的文件系统中。如果需要创建作业并使用存储过程调用它,那么是否需要在Web服务器上安装任何SQL组件?如果没有,我将不得不选择我原来问题中的选项。要在web服务器上运行SSI,您需要在web服务器上安装SSI(以及web服务器的SQL server许可证)。或者,如果SSIS包位于数据库上,数据库上有一个存储的进程,则可以在Web服务器上不使用SQL组件的情况下从Web服务器调用它们。+1使用SQL代理作业。使用sp_start_job启动现有作业,让包将其状态写入自定义表,并在您的aspx页面中显示。或者,您可以使用dtexec.exe从线程中的文件运行包,但这也需要安装SSIS.ETL??啊,谢谢谷歌:电子提取转换负载