SQL SSIS 验证失败并返回验证状态“VS_ISBROKEN”
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/22487342/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
SSIS failed validation and returned validation status "VS_ISBROKEN"
提问by epelletier9740
I'm trying to create a temp table and process two data flows using the temp table. It is in a sequence container and if I just execute the container it run perfect but when the entire package is ran it returns this error:
我正在尝试创建一个临时表并使用临时表处理两个数据流。它在一个序列容器中,如果我只是执行容器,它运行得很好,但是当整个包运行时,它会返回此错误:
Information: 0x4004300A at V-AccidentCodesBase, SSIS.Pipeline: Validation phase is beginning.
Error: 0xC0202009 at V-AccidentCodesBase, Insert into Temp Table [69]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E14.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E14 Description: "Statement(s) could not be prepared.".
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E14 Description: "Invalid object name '##TmpAccidentCode'.".
Error: 0xC004706B at V-AccidentCodesBase, SSIS.Pipeline: "Insert into Temp Table" failed validation and returned validation status "VS_ISBROKEN".
Error: 0xC004700C at V-AccidentCodesBase, SSIS.Pipeline: One or more component failed validation.
Error: 0xC0024107 at V-AccidentCodesBase: There were errors during task validation.
信息:0x4004300A 在 V-AccidentCodesBase,SSIS.Pipeline:验证阶段开始。
错误:V-AccidentCodesBase 处的 0xC0202009,插入临时表 [69]:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E14。
OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80040E14 描述:“无法准备语句。”。
OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80040E14 描述:“无效的对象名称‘##TmpAccidentCode’。”。
错误:0xC004706B 在 V-AccidentCodesBase,SSIS.Pipeline:“插入临时表”验证失败并返回验证状态“VS_ISBROKEN”。
错误:0xC004700C 在 V-AccidentCodesBase,SSIS.Pipeline:一个或多个组件验证失败。
错误:V-AccidentCodesBase 处的 0xC0024107:任务验证期间出现错误。
采纳答案by epelletier9740
I ended up solving the problem which was overloading tempDB. When I slowed the process down to one command to tempDb at a time it all ran through smoothly.
我最终解决了使 tempDB 过载的问题。当我将过程放慢到一次对 tempDb 的一个命令时,一切都顺利进行。
回答by Mike Honey
I would set the DelayValidation property to True. You may get away with just setting this on the Sequence Container, or you may need to repeat that setting on child objects, e.g. your Data Flow Task.
我会将 DelayValidation 属性设置为 True。您可能只需在 Sequence Container 上进行设置即可,或者您可能需要在子对象(例如您的数据流任务)上重复该设置。
回答by Morteza Madadi
As other guys mentioned, the error may happen due to different reasons. In my case, I realized that I have tried to convert some NULL to int in Script section of SSIS. Something like :
正如其他人所提到的,错误可能由于不同的原因而发生。就我而言,我意识到我试图在 SSIS 的脚本部分将一些 NULL 转换为 int。就像是 :
ProductsBuffer.ProductId = Int64.Parse(reader["ProductId"].ToString());
so the fix was easy. I just checked the field before converting, to make sure it is not null:
所以修复很容易。我只是在转换之前检查了该字段,以确保它不为空:
if (reader["ProductId"] != DBNull.Value)
ProductsBuffer.ProductId = Int64.Parse(reader["ProductId"].ToString());
回答by Mike
Also faced the same error message. The issue was permissions on the database for the user that runs the ETL (a service account). Make sure the user that runs the package has enough permissions to execute the query.
也面临同样的错误信息。问题是运行 ETL(服务帐户)的用户对数据库的权限。确保运行包的用户有足够的权限来执行查询。
回答by codeMonkey
I'm using VS 2017. I wonder if after a while it forgets your "saved" database passwords, because mine worked fine for days, then just quit working out of the blue, gave the VS_ISBROKEN
error. After I reentered the password for one of my database connections--despite the fact I had checked the Save Password
checkbox previously--it started working again.
我正在使用 VS 2017。我想知道一段时间后它是否会忘记您“保存的”数据库密码,因为我的工作正常好几天,然后突然退出工作,给出VS_ISBROKEN
错误。在我为我的一个数据库连接重新输入密码后——尽管我之前已经选中了Save Password
复选框——它又开始工作了。
回答by camila
I faced the same error, in my case, I was using SSIS to import data from an excel file into a couple of tables.
我遇到了同样的错误,就我而言,我使用 SSIS 将数据从 excel 文件导入到几个表中。
I used 2 differents files and it failed with one and worked with the other, after some review I found that I was referring to the name of the excel sheet within the package, so the excel sheet has to be named EXACTLY (i think it is case sensitive) as you used on the SSIS package
我使用了 2 个不同的文件,其中一个失败了,另一个使用了区分大小写)正如您在 SSIS 包上使用的那样