【发布时间】:2014-08-14 19:35:15
【问题描述】:
我正在使用的 BIDS 2008 SSIS 包在到达包中的任何数据流任务时验证失败。我可以在本地计算机上运行 BIDS 2008 中的 SSIS 包。当我通过 SQL 代理作业运行 SSIS 包时,包失败并显示以下错误消息。我通过谷歌搜索研究了错误代码0x80004005和错误代码0xC004706B,但没有找到任何有用的东西。
有问题的 SSIS 包是在同一个 SQL 代理作业中一起运行的多个 SSIS 包之一。原始 SQL 代理作业中的其他 SSIS 包都能够成功运行。这使我相信 SQL 代理服务帐户和代理帐户配置了适当的权限。 DBA 能够确认服务帐户和代理帐户确实具有适当的权限。
SQL 代理作业使用操作系统 (CmdExec) 类型运行 SSIS 包,并且 SSIS 包的 Run64BitRuntime 设置为 FALSE,因此 SSIS 包在 32 位运行时下运行。
出于调试目的,我在原始 SSIS 包的新 SSIS 包中重新创建了数据流任务、数据库连接以及相关的源和目标任务。调试 SSIS 包能够在我的计算机上本地运行,但当我尝试使用与原始 SQL 代理作业完全相同的新 SQL 代理作业设置运行时失败。
我还使用了不同的数据库连接,例如 Native OLE DB\SQL Server Native Client 10.0、10.1、11.1 和 Native OLE DB\Microsoft OLE DB Provider for SQL Server。我测试调试SSIS包的时候都失败了
我已验证 OLE DB 源和目标的元数据与 SQL Server 数据库表中的数据类型和长度相匹配。我已验证数据流任务中的 OLE DB 源任务使用的存储过程在 SQL Server Management Studio 上运行时可以正常工作,并且服务帐户有权运行该存储过程。
我认为这是我在解决此问题时能回忆起的所有信息。
以前有没有其他人遇到过这个错误?有什么可能的解决方案可以尝试吗?
欢迎任何帮助!
错误信息:
以用户身份执行:域\SQLAgentServiceAccount。适用于 64 位的 Microsoft (R) SQL Server 执行包实用程序版本 10.50.2500.0
版权所有 (C) Microsoft Corporation 2010。保留所有权利。开始时间:下午 1:37:09
错误:2014-08-14 13:37:09.94 代码:0xC0202009 源:数据流任务 - OLEDB 源 [1]
说明:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。 OLE DB 记录可用。来源:“Microsoft OLE DB Provider for SQL Server”Hresult:0x80004005
说明:“语法错误或访问冲突”。
结束错误错误:2014-08-14 13:37:09.94 代码:0xC004706B 来源:数据流任务 SSIS.Pipeline
说明:“组件“OLEDB Source”(1)”验证失败,返回验证状态“VS_ISBROKEN”。
结束错误错误:2014-08-14 13:37:09.94 代码:0xC004700C 来源:数据流任务 SSIS.Pipeline
说明:一个或多个组件验证失败。
结束错误错误:2014-08-14 13:37:09.94 代码:0xC0024107 来源:数据流任务
说明:任务验证期间出现错误。
结束错误DTExec:包执行返回 DTSER_FAILURE (1)。
开始时间:下午 1:37:09 结束时间:下午 1:37:09 经过时间:0.219 秒。处理退出代码 1。
步骤失败。
【问题讨论】:
-
当您将一个包从一台机器迁移到另一台机器并出现验证错误时,这很可能是由您的连接管理器的配置或它实际连接到的数据库中的差异引起的。如果您的服务帐户有问题,您会收到登录失败消息。但是,您有“语法错误或访问冲突”。 OLEDB 源中的命令是变量中的表达式吗?这是 SSIS 2008r2 或更低版本还是 ssis 2012 及更高版本?您是否使用包配置或参数来设置连接字符串?
-
OLEDB 源中的命令是一个嵌入式存储过程,它接受两个参数并返回一个数据集以移动到另一个数据库中的表。 SSIS 包是在 BIDS 2008 中开发的,并通过 SQL Server 2008 R2 上的 SQL 作业运行。使用配置文件获取 SQL Server 名称。
-
当您在本地进行测试时,您是否连接到与通过 SQL 代理运行它时相同的服务器?如果不是,两个地方的过程是否相同?
-
是的,我正在连接到通过 SQL 代理运行包的同一台服务器。
-
两种情况下两个参数的设置方式一样吗?另外,您提到了 64 位与 32 位,这对您要连接的内容很重要吗?根据您发布的错误消息,您正在 64 位下执行。
标签: sql-server ssis sql-server-2008-r2 bids sql-agent-job