SSIS 包在 Visual Studio 和命令行中有效,但在代理中无效
Posted
技术标签:
【中文标题】SSIS 包在 Visual Studio 和命令行中有效,但在代理中无效【英文标题】:SSIS package works in Visual Studio, AND Command line but not in Agent 【发布时间】:2015-04-25 16:41:38 【问题描述】:我有一个使用 VS 在服务器上开发的 SSIS 包。 该包在 Visual Studio 中运行良好,但是当我添加到 SQL Server 代理中的作业时,包失败。 我从 SAGE Line 50 v19 中提取数据,因此 ODBC 驱动程序是 32 位的。而且我在 64 位环境中运行。 已经将 odbc 设置为 32 位,确保代理设置为运行 32 位,但仍然遇到错误。我已经测试了从命令行运行包如下
"C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\DTExec.exe" /FILE "E:\Reporting\Projects\SSIS\SSIS2012\SSIS2012\Package1.dtsx" /DECRYPT password /CHECKPOINTING OFF /REPORTING EWCDI
当我运行它时它工作得很好。但是,当我将 sql 代理作业设置为作为“操作系统 (CmdExec)”运行时,我得到以下输出。
Microsoft (R) SQL Server Execute Package Utility
Version 11.0.2100.60 for 32-bit
Copyright (C) Microsoft Corporation. All rights reserved.
Started: 13:30:44
Info: 2015-02-24 13:30:44.45
Code: 0x40016044
Source: Data Flow Task Data Flow Task (SSIS.Pipeline)
Description: Attempting to upgrade "ODBC Source". The package is attempting to upgrade an extensible object.
End Info
Error: 2015-02-24 13:30:44.59
Code: 0xC0014020
Source: SSIS002_SageCompany5Import Connection manager "Sage005.Manager"
Description: An ODBC error -1 has occurred.
End Error
Error: 2015-02-24 13:30:44.59
Code: 0xC0014009
Source: SSIS002_SageCompany5Import Connection manager "Sage005.Manager"
Description: There was an error trying to establish an Open Database Connectivity (ODBC) connection with the database server.
End Error
Error: 2015-02-24 13:30:44.59
Code: 0xC00291EC
Source: Get Max(SourceID) Execute SQL Task
Description: Failed to acquire connection "Sage005.Manager". Connection may not be configured correctly or you may not have the right permissions on this connection.
End Error
Warning: 2015-02-24 13:30:44.59
Code: 0x80019002
Source: SSIS002_SageCompany5Import
Description: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (1) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
End Warning
DTExec: The package execution returned DTSER_FAILURE (1).
我不明白为什么这在其他地方运行良好。谷歌搜索了几个小时,尝试了我能想到的一切,但没有运气。
【问题讨论】:
将包文件放在与 DTExec.exe 不同的驱动器上是否会导致问题? 第一个问题的出色工作。你已经通过并击中高音来确定你在做什么,问题是什么以及你尝试了什么。谢谢你 您添加所有者了吗?喜欢在屏幕上[链接]pl.tinypic.com/view.php?pic=2hdcopg&s=8#.VOyWqS6gTEs 我看到输出中看起来很奇怪的是Attempting to upgrade "ODBC Source"
和There was an error trying to establish an Open Database Connectivity (ODBC) connection with the database server
当包在 SQL 代理下运行时,它是作为代理运行还是涉及存储凭据和代理?如果是前者,Sage 服务器的身份验证如何设置?它是用户名和密码还是查看当前用户?如果凭据,这些存储在哪里?文本文件?如果是这样,可能是在代理帐户没有权限的文件系统上
@bp3849 您是否尝试过其他驱动程序(OLE DB 等)?
【参考方案1】:
我正在使用 32 位 DSN 执行类似的操作,并且在 SQL 作业中选中了“32 位运行时”复选框(在 SSIS 作业步骤 - 高级选项卡下)。
查看操作系统 (CmdExec) 选项,它看起来好像有一个“/X86”开关 - 如果您必须从命令行运行或者只选中上面的框,也许可以尝试一下?
当您说代理“设置为运行 32 位”时,如果这是您已经完成的操作,我们深表歉意。
【讨论】:
【参考方案2】:不是 100% 确定这是否适用于您,但我遇到了类似的问题,我在 ssis 项目中的 cmd 应用程序在 VS 中完美运行,但一旦部署到 ssisdb,它就会挂起,并且从未完成,结果证明 cmd 需要用户输入并且它在 ssisdb 中它没有显示,所以你无法继续,它会出错
希望对你有帮助
【讨论】:
以上是关于SSIS 包在 Visual Studio 和命令行中有效,但在代理中无效的主要内容,如果未能解决你的问题,请参考以下文章
SSIS 项目在 Visual Studio 中构建,但不是来自 Devenv 命令行
Visual Studio 17 和 19 不能再编辑 SSIS 项目
Visual Studio SSIS如何处理扩展和程序包部署?
在 Visual Studio 2012 / 2013 中使用 SSIS BIDS
来自_Choose Toolbox Items_的Visual Studio 2013中缺少SSIS数据流项目和SSIS控制流项目选项卡