【问题标题】:SSIS package gives error after deployment SQL Server 2012SSIS 包在部署 SQL Server 2012 后出现错误
【发布时间】:2018-10-04 16:19:13
【问题描述】:

我在 Visual Studio 2015 中创建了一个包。它工作正常。

基本上,我使用的是生成 Excel 电子表格并将其发送给不同用户的脚本任务。

在我将包部署到 SQL Server 2012 并尝试从那里执行它之后 - 我收到一个错误,没有任何详细信息。

我还从 SSISDB 运行 select * from internal.packages 以确保 package_format_version 为 6,这应该是 SQL Server 2012 的值。

可能是什么问题?

【问题讨论】:

  • 服务器是否安装了您用来创建 Excel 电子表格的库?服务器上运行包的账号是否有权限写或发送文件到相关地方?如果创建运行包的 SQL Server 代理作业,是否有更好的错误消息?
  • 服务器是否安装了您用来创建 Excel 电子表格的库? - 我不确定图书馆,但我有代理工作,也可以创建 Excel 电子表格并通过电子邮件发送。
  • 服务器上运行包的账号是否有权限写入或发送文件到相关地方? - 同样,它是我的帐户,我有多个代理工作以及多个创建 excel 文件的 SSRS 报告。
  • 我似乎记得在部署包含 C# 脚本的 SSIS 包时遇到了这个问题。在我们的例子中,我们必须使用 SSMS 2014 来部署包。但我们也是从 2008>2014 年开始的,在你的情况下,我不确定这是否有助于倒退。我讨厌建议您在 VS 2013 中重新创建,但 可能 是解决方案。希望您能找到另一个解决方法。

标签: sql-server ssis ssis-2016


【解决方案1】:

这不一定是关于如何解决问题的答案,但它是关于如何修改脚本任务以获得更好的错误消息然后“脚本任务失败:抛出异常......”的答案

我们总是将脚本任务包装在 try-catch 中,然后从脚本任务中引发异常消息:

    public void Main()
    {
        try
        {

            //Your code here

            Dts.TaskResult = (int)ScriptResults.Success;
        }
        catch (Exception ex)
        {
            Dts.Events.FireError(-1, "", ex.Message, String.Empty, 0);
            Dts.TaskResult = (int)ScriptResults.Failure;
        }
    }

这始终是一个挑战,尤其是对于已部署的 SSIS 包,当它在脚本任务上出错时,您不一定能清楚地知道它失败的原因,并且您会收到一条神秘的错误消息。上面的代码将捕获引发异常的原因并将其返回给集成服务。

【讨论】:

  • 赞成这个答案,因为它是一种非常有用的技术,可以在您未在调试模式下运行包时(即通过 BIDS/SSDT/VS)获取有关脚本任务异常的更多信息。
【解决方案2】:

您可能需要确保在 SSIS 服务器上安装了“Microsoft Access Database Engine 2010 Redistributable”驱动程序。你可以得到它here

【讨论】:

  • 谢谢。但它已安装
猜你喜欢
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
  • 2014-02-28
  • 1970-01-01
  • 2021-01-22
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
相关资源
最近更新 更多