2014-10-27 66 views
0

类似this post在SSIS包

更新的系统变量我有一个SSIS包使用脚本任务在磁盘上创建一个Excel文件,并为之填充数据从存储过程(使用Microsoft.Office.Interop一个SQL。 Excel中)。这在测试时以及通过SSIS目录手动运行已部署的软件包时效果很好,但是当我通过SQL Server代理自动运行任务时,软件包在“脚本任务”步骤中失败。我的作业作为代理帐户运行,与我在测试时登录到服务器的帐户相同(并且与手动运行包时的帐户相同)。

我的理解是,即使作业使用代理运行,任何桌面交互都会在SQL Server代理登录的配置文件上下文中发生。由于该配置文件未被主动登录,因此交互失败。挖掘更多内容时,名为“InteractiveMode”的包中有一个bool System Variable,它被设置为“False”。我有一种感觉,如果我可以将其切换为True,那么一切都会变得沉闷多y。麻烦的是,该变量只能作为“ReadOnly”访问我的脚本任务...

有没有什么办法在运行时手动或编程设置SSIS包中的System:InteractiveMode变量?请帮忙!我现在不得不手动运行这些预定作业,这是一个很大的麻烦。

谢谢。

+0

不,您将无法更改该值。它是只读的,因为它从操作系统告诉它的价值中获得它的价值。相关问题缺乏细节。你如何定义你的工作?它是否以32位模式运行?我的回忆是模糊的,但我相信我曾经通过Agent运行SSIS包与办公室库进行交互。 – billinkc 2014-10-27 18:20:30

+0

作业定义为32位,在代理本地管理员帐户下运行。我不认为这是一个权限问题,因为我试图给“每个人”完全访问正在写入的文件夹。 – ItJustWerks 2014-11-11 20:22:11

+0

这与您的问题有关? http://stackoverflow.com/a/26122982/181965 – billinkc 2014-11-11 21:06:22

回答

1

几个月前我有这个问题,事实证明,执行选项需要设置为使用32位运行时。如果您使用SQL Server 2008 R2,则可以打开您的作业并双击该步骤。它位于执行选项选项卡下。 enter image description here

如果仍然有错误,你可能要考虑改变包装,以便它使用一个文件系统任务创建/重命名Excel文档,然后在数据流任务从您的存储过程中的数据移动到你的excel文件。根据您的数据,您可能需要在两者之间添加数据转换步骤。下面是关于这一主题的好文章:http://www.mssqltips.com/sqlservertip/3046/sql-server-integration-services-data-type-conversion-testing/

编辑: 我没有使用SQL Server 2012中还没有,但根据MSDN,它看起来像选项配置选项卡下。以下是他们的文章:http://msdn.microsoft.com/en-us/library/gg471507(v=sql.110).aspx

+0

我正在使用SQL Server 2012,我根本没有看到执行选项选项卡。是否有另一种方法来设置32位运行时选项? – ItJustWerks 2014-10-27 21:13:14

+0

所以我找到了32位选项,并没有帮助。我无法使用文件系统任务创建Excel文件/数据流任务来移动数据,因为Excel文件必须以非常特殊的方式进行格式化。使用Microsoft.Interop.Excel我可以通过VBA设置列/单元格格式。这仍然真的杀了我...任何其他建议? – ItJustWerks 2014-11-11 20:20:53

+0

您可以创建一个excel文件作为模板,使用文件任务使用新名称(重命名文件)复制副本,将数据复制到那里,然后将其保存。我有几个喜欢的地方,他们需要它以特定的方式进行格式化,所以我在服务器上为了Excel模板创建了一个文件夹。 – april4181 2014-11-12 14:10:36