我正在尝试使用临时表创建临时表并处理两个数据流。它在一个序列容器中,如果我只是执行容器它运行完美但是当整个包运行时它会返回错误:
信息:V-AccidentCodesBase上的0x4004300A,SSIS.Pipeline: 验证阶段正在开始。
错误:V-AccidentCodesBase上的0xC0202009,插入临时表[69]: SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误 代码:0x80040E14。
OLE DB记录可用。资料来源:“Microsoft SQL Server Native 客户端11.0“Hresult:0x80040E14描述:”声明可以 没准备好。“。
OLE DB记录可用。资料来源:“Microsoft SQL Server Native 客户端11.0“Hresult:0x80040E14描述:”无效的对象名称 '## TmpAccidentCode'。“
错误:V-AccidentCodesBase上的0xC004706B,SSIS.Pipeline:“插入 临时表“验证失败并返回验证状态 “VS_ISBROKEN”。
错误:V-AccidentCodesBase上的0xC004700C,SSIS.Pipeline:一个或多个 组件验证失败。
错误:V-AccidentCodesBase上的0xC0024107:期间出现错误 任务验证。
答案 0 :(得分:4)
我将DelayValidation属性设置为True。您可以在序列容器上设置它,或者您可能需要在子对象上重复该设置,例如,您的数据流任务。
答案 1 :(得分:1)
正如其他人提到的,错误可能由于不同的原因而发生。在我的例子中,我意识到我已经尝试在SSIS的Script部分中将一些NULL转换为int。类似的东西:
ProductsBuffer.ProductId = Int64.Parse(reader["ProductId"].ToString());
所以修复很简单。我只是在转换之前检查了字段,以确保它不是null:
if (reader["ProductId"] != DBNull.Value)
ProductsBuffer.ProductId = Int64.Parse(reader["ProductId"].ToString());
答案 2 :(得分:0)
我最终解决了重载tempDB的问题。当我逐渐将这个过程减慢到一个tempDb命令时,一切顺利进行。
答案 3 :(得分:0)
我遇到了同样的错误,在我的情况下,我使用SSIS将数据从excel文件导入到几个表中。
我使用了两个不同的文件,但是它失败了一个并与另一个一起工作,经过一些审查后我发现我指的是包中的excel表的名称,因此excel表必须命名为完全(i认为它是区分大小写的)就像你在SSIS包上使用的那样
答案 4 :(得分:0)
也面临相同的错误消息。问题是运行ETL(服务帐户)的用户对数据库的权限。确保运行程序包的用户具有足够的权限来执行查询。
答案 5 :(得分:0)
我正在使用VS2017。不知道过一会儿它是否忘记了您“保存的”数据库密码,因为我的工作了好几天,然后退出工作却出现了VS_ISBROKEN
错误。重新输入我的一个数据库连接的密码后-尽管以前我已经选中了Save Password
复选框-它再次开始工作。