2010-02-02 131 views
4

因此,我在SSIS中创建了一个包,用于从文本文件中读取数据并将其加载到数据库表中。SQL Server集成服务SSIS 2005 - 如何让用户运行包?

对于非技术性最终用户在需要时运行此操作的最佳方法是什么?

我的老板正在考虑让SP启动它,然后在报告服务中发布报告启动存储过程。当然,还有更好的方法!

回答

1

这并不完全简单,并附带一些健康警告,但可以将SSRS报告配置为使用SSIS包作为数据源 - 请参阅http://msdn.microsoft.com/en-us/library/ms345250.aspx

启用此功能后,您可以向SSIS包添加额外步骤,以将一个(或多个)report datasets输出到SSRS报告。

+0

谢谢埃德。我得到了这个设置,这很酷。 问题。如果软件包失败,例如某人删除了一个输入文件,报告只会说“软件包失败...”。有没有办法获得详细的故障信息?告诉用户到底发生了什么问题。 – Greg 2010-02-22 20:16:54

+0

@Greg - 好问题!也许有一种方法是使用SSIS错误处理程序将“错误”数据集(包含失败的详细信息)返回给可能有条件显示的SSRS?我认为这应该工作,但我没有尝试过。 – 2010-02-23 07:57:32

+0

我的SSIS包将文件写入网络共享,并且由于某些身份验证问题,我始终无法使其工作。在放弃并进入PowerShell之前,我花了很长时间与Kerberos搞混了。 – 2017-07-10 00:13:11

2

ASP.NET是一个很好的解决方案:http://www.codeproject.com/KB/aspnet/SSIS_DOTNET.aspx

+0

哇。我不知道你可以从.NET调用SSIS ... – Sung 2010-02-02 23:36:33

+1

虽然这可能是一个很好的小包解决方案,但我认为你会遇到更大包的问题。通过这种方法,您可以在HTTP请求的上下文中运行程序包,这意味着如果您的程序包运行的时间超过HTTP超时值,它将被终止。此外,IIS AppPool可能会由于设置了内存/ CPU限制而自动重新启动,并且您的软件包也会被终止。如果你真的想从.NET运行包,我会建议使用WCF端点来构建一个Windows服务,WCF端点将用于启动包和接收状态。 – unclepaul84 2010-02-04 15:58:06

2

您也可以创建一个SQL代理作业以运行空程序包。然后创建一个Web前端来调用EXEC msdb.dbo.sp_start_job N'Your SSIS Job Name';

+0

听起来很有希望。我能得到任何可以在Web前端显示的反馈吗?例如,错误,加载的行等? – Greg 2010-02-04 04:10:28

+0

是的。您可以围绕sp_help_job存储过程开发一个包装程序来轮询Job状态。对于插入的行,您需要构建自定义的审核表并将其键入包执行ID。 – unclepaul84 2010-02-04 15:42:52