SSIS验证失败并返回验证状态" VS_ISBROKEN"

时间:2014-03-18 17:58:34

标签: sql sql-server validation ssis

我正在尝试使用临时表创建临时表并处理两个数据流。它在一个序列容器中,如果我只是执行容器它运行完美但是当整个包运行时它会返回错误:

  

信息: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:期间出现错误   任务验证。

6 个答案:

答案 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复选框-它再次开始工作。