Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SSIS目标插入错误_Sql Server_Visual Studio_Ssis_Etl - Fatal编程技术网

Sql server SSIS目标插入错误

Sql server SSIS目标插入错误,sql-server,visual-studio,ssis,etl,Sql Server,Visual Studio,Ssis,Etl,包说明:我使用一个数据库中的源进行查找以获取代理地理密钥,然后使用另一个来检查客户是否存在,如果不存在,则插入行如果存在,则更新行 问题:我无法插入大约700000行 问题描述:我已经用data viewer查看了很长很长一段时间了,正在输出到平面文件,但找不到问题的原因 从下面的错误中,通过SSIS进行研究和检查,我得出了一个空白 错误:0xC0209029位于DimCustomer,Dw_DimCustomer[2]:SSIS错误代码DTS_E_诱导传输失败错误。“Dw_DimCustome

包说明:我使用一个数据库中的源进行查找以获取代理地理密钥,然后使用另一个来检查客户是否存在,如果不存在,则插入行如果存在,则更新行

问题:我无法插入大约700000行

问题描述:我已经用data viewer查看了很长很长一段时间了,正在输出到平面文件,但找不到问题的原因

从下面的错误中,通过SSIS进行研究和检查,我得出了一个空白

错误:0xC0209029位于DimCustomer,Dw_DimCustomer[2]:SSIS错误代码DTS_E_诱导传输失败错误。“Dw_DimCustomer.Inputs[OLE DB Destination Input]”失败,因为发生了错误代码0xC020907B,“Dw_DimCustomer.Inputs[OLE DB Destination Input]”上的错误行处理指定错误时失败。指定组件的指定对象上发生错误。在此之前可能会发布错误消息,其中包含有关故障的更多信息

错误:DimCustomer处的0xC0047022,SSIS。管道:SSIS错误代码DTS_E_PROCESSINPUTFAILED。在处理输入“OLE DB Destination input”(15)时,组件“Dw_DimCustomer”(2)上的ProcessInput方法失败,错误代码为0xC0209029。标识的组件从ProcessInput方法返回错误。该错误特定于组件,但该错误是致命的,将导致数据流任务停止运行。在此之前可能会发布错误消息,其中包含有关故障的更多信息


错误:DimCustomer处的0xC02020C4,SQL_Customer[154]:尝试向数据流任务缓冲区添加行失败,错误代码为0xC0047020

错误:0xC0047038位于DimCustomer,SSIS。管道:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。SQL_客户上的PrimeOutput方法返回错误代码0xC02020C4。当管道引擎调用PrimeOutput()时,组件返回了故障代码。故障代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关故障的更多信息

完成的工作:

我已检查所有格式是否匹配,并且不会发生截断。 已检查所有查找是否正常工作。 删除了我的目标数据库(不用担心,我正在测试环境中)并重新创建了它。 我已经检查了所有正确的列是否在任务之间以正确的格式显示了正确的数据。 我已经检查了唯一的错误是来自最终的OLEDB目标输出(它是)

我不知道该去哪里,因为答案总是满满的


欢迎任何指点、想法或帮助。

从您所附的图片中,我认为您正在使用SSIS 2012或更高版本,在搜索后,有许多问题会导致此问题

您可以测试以下内容:

首先

如果您的服务器操作系统是64位的,请尝试在64位运行时运行ssis包。您可以按照此了解更多详细信息

尝试将
OLEDB目标
替换为
SQL server目标
,并将
超时
设置为更高的值(例如:500)

第三次

在您的
OLEDB目的地上
尝试取消选中
Check Constraints
复选框(错误可能是由约束引起的)

参考资料

第一个解决方法

第二个解决方法

其他信息

我认为这是主要的错误消息,如果我的回答没有解决,您可以搜索它(如果没有从您的包中收到错误消息):


尝试向数据流任务缓冲区添加行失败,错误代码为0xC0047020


希望它有助于转到DimCustomer Properties:

将BufferMaxRows设置为100。这可能会增加包的执行时间,因为在该实例中,它一次只传输100行,使用更少的RAM

如果这不起作用:


您可以创建go-for循环。在For循环中添加同样的内容,每次运行100行应用程序。通过将总计数除以100,可以找到循环执行。这肯定会对你有帮助

当数据在到达数据流目标之前损坏数据时,会发生此错误。数据流意外地找到了空值、空白值或空值,以便使用健康备份重新创建源数据库。

是否删除并重新创建了源?否,我已经使用源运行了SSIS包,这表明一切正常。“尝试向数据流任务缓冲区添加行失败”可能意味着您的RAM已用完。在TaskManager中查看RAM使用率是否在上升。顺便说一句,您使用的模式非常慢。我总是从暂存表直接进行更新/插入。首先,所有操作系统都匹配。第二,数据库不是本地保存的,因此必须使用OLEDB。第三个检查约束像一个符咒。解决方案:在您的OLEDB目的地上,请尝试取消选中“检查约束”复选框(错误可能是由约束引起的)。非常感谢@您提供的错误消息是否含糊不清。这就是为什么我提供了很多解决方法:)。很高兴解决您的问题检查约束起作用了,但随后我在表中得到了不符合外键约束的数据。。。这并不理想。我将目标更改为OLE DB命令,并编写了所需的插入。那时候工作很好。