在SSIS包中更新系统变量

时间:2014-10-27 17:44:04

标签: sql sql-server ssis etl dts

this post类似

我有一个带有脚本任务的SSIS包,它在磁盘上创建一个Excel文件,并使用SQL存储过程(使用Microsoft.Office.Interop.Excel)中的数据填充它。这在测试和通过SSIS目录手动运行已部署的程序包时非常有用,但是当我将任务计划为通过SQL Server代理自动运行时,程序包在“脚本任务”步骤中失败。我将Job作为代理帐户运行,与我在测试时登录到服务器的帐户相同(和手动运行软件包时的帐户相同)。

我的理解是,即使作业使用代理运行,任何桌面交互都发生在SQL Server代理登录的Profile上下文中。由于该配置文件未主动登录,因此交互失败。进一步深入研究,名为“InteractiveMode”的软件包中有一个bool系统变量设置为“False”。我有一种感觉,如果我可以将其切换为True,那么一切都会变得笨拙。麻烦的是,该变量只能作为“ReadOnly”...

访问我的脚本任务

有没有办法在运行时手动或以编程方式在SSIS包中设置System:InteractiveMode变量?请帮忙!我现在必须手动运行这些预定的工作,这是一个很大的痛苦。

感谢。

1 个答案:

答案 0 :(得分: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,看起来该选项位于Configuration选项卡下。这是他们的文章:http://msdn.microsoft.com/en-us/library/gg471507(v=sql.110).aspx