【问题标题】:SQL 2012 - SSIS Package not populating Text file when scheduledSQL 2012 - SSIS 包未按计划填充文本文件
【发布时间】:2014-05-22 17:09:54
【问题描述】:

我正在开发 SQL 2012 Enterprise,并且我有一组 SSIS 包导出,可将数据推送到共享网络文件夹上的文本文件中。这些软件包并不复杂,并且在大多数情况下它们都能完美运行。我面临的问题是它们无法按计划工作 - 尽管报告它们已经成功。

让我解释一下场景;
1) 从 BIDS 中手动运行时,它们可以正常工作,创建 txt 文件并填充数据。
2) 当部署到 SSISDB 并从代理作业运行时,它们也可以按预期工作 - 创建文件并填充数据。
3)当Agent作业安排在晚上运行时,作业运行并报告成功。文件已创建,但未填充数据。

我检查了集成服务目录上的报告,并逐行比较了来自 OnInformation 的消息。两次运行都报告平面文件目标写入了 xxxx 行。

数据在那里,代理帐户具有正确的访问权限。我无法理解为什么该作业在手动启动时有效,但在计划时表现不同。

有人见过类似的吗?感觉是个很奇怪的bug....

亲切的问候,

詹姆斯

【问题讨论】:

    标签: sql ssis sql-server-2012 agent


    【解决方案1】:

    确保您设置为 SSIS 任务代理的帐户对文件具有读/写权限。

    IMX,当您手动运行 SQL 代理作业时,它似乎使用了以某种方式启动它的用户的上下文。我一直认为这是模仿的副作用。只有当它实际按计划运行时,所有内容都使用分配的安全权限。

    此外,我认为当用户启动作业时,用户正在模拟代理,但是当作业通过计划运行时,代理的帐户正在模拟代理。确保服务帐户有权模拟代理。看看sp_grant_login_to_proxysp_enum_login_for_proxy

    这是一个大致完成整个过程的链接: http://www.mssqltips.com/sqlservertip/2163/running-a-ssis-package-from-sql-server-agent-using-a-proxy-account/

    我还记得这个视频很有用: http://msdn.microsoft.com/en-us/library/dd440761(v=SQL.100).aspx

    【讨论】:

    • 谢谢 - 不幸的是不是这样。我的第一个想法是权限,但代理使用的是我们一直使用的相同服务帐户,并且对目的地具有权限。我还检查了作业历史记录,它使用服务帐户来执行包,即使它是由用户帐户调用的。昨天我还尝试了另一项测试 - 将作业安排在“运行一次”类型的日程表中,并在白天设定的时间。令人惊讶的是,这也能正常工作,但昨晚按循环计划执行时,问题再次出现。
    • 好吧,这不是原因——我是个傻瓜。我没有禁用旧服务器上以前的作业,因此它们一直在正确运行,但被旧服务器上的作业覆盖。我不敢相信我的第一篇文章是 st00pid!
    【解决方案2】:

    我在使用 Excel 文件时遇到了同样的问题。这是许可权。

    对我有用的是将SERVICE 帐户添加到文件夹的安全选项卡中。然后 SQL 代理可以访问这些文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多