25

我正在尝试制作一个 DTS 包以在同一服务器上的两个数据库之间传输数据,但出现以下错误。Iv 读到,当您在不同的数据库类型之间传输并且丢失精度时,可能会发生多步 OLE DB 操作生成的错误,但这里不是这种情况。如何检查列元数据?

错误:数据流任务中的 0xC0202009,piTech [183]​​:发生 OLE DB 错误。错误代码:0x80040E21。OLE DB 记录可用。来源:“Microsoft SQL Native Client”Hresult:0x80040E21 描述:“多步 OLE DB 操作生成错误。检查每个 OLE DB 状态值(如果可用)。没有完成任何工作。”。

错误:数据流任务中的 0xC0202025,piTech [183]​​:无法创建 OLE DB 访问器。验证列元数据是否有效。

错误:数据流任务中的 0xC004701A,DTS.Pipeline:组件“piTech”(183)未能通过预执行阶段并返回错误代码 0xC0202025。

4

12 回答 12

36

看看字段的属性(类型、长度、默认值等),它们应该是相同的。

我在使用 SQL Server 2008 R2 时遇到了这个问题,因为字段的长度不相等。

于 2011-10-01T11:02:02.653 回答
11

当源表包含 TEXT 列而目标不是 TEXT 列时,此错误很常见。如果您以前没有遇到(或忘记!)它,它可能是一个真正的吃货。

将文本列转换为字符串并将截断时的错误条件设置为忽略。这通常可以作为此错误的解决方案。

于 2012-10-22T17:26:03.163 回答
3

此查询应识别潜在问题的列...

SELECT * 
FROM [source].INFORMATION_SCHEMA.COLUMNS src
    INNER JOIN [dest].INFORMATION_SCHEMA.COLUMNS dst 
        ON dst.COLUMN_NAME = src.COLUMN_NAME
WHERE dst.CHARACTER_MAXIMUM_LENGTH < src.CHARACTER_MAXIMUM_LENGTH 
于 2008-09-09T14:36:38.443 回答
3

'-2147217887' message 'IDispatch error #3105' source 'Microsoft OLE DB Service Components' description 'Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.'."

这也是我面临的。问题在于我将 SQLOLEDB.1 提供程序更改为 SQLNCLI11 ,而没有在连接字符串中提及兼容模式。当我DataTypeCompatibility=80;在连接字符串中设置它时,问题就解决了。

于 2017-06-21T09:11:46.367 回答
2

这个问题主要是由于文件末尾的空行,删除这些并运行作业。

于 2017-08-04T10:46:11.383 回答
1

对我来说,答案是我将两个参数传递给并执行 SQL 任务,但只使用一个。我正在做一些测试,并使用第二个参数注释掉了一段代码。我忽略了删除参数映射。

因此,如果您使用的是执行 SQL 任务,请确保在参数映射中传入正确数量的参数。

于 2018-10-09T17:36:34.643 回答
0

您可以使用SELECT * FROM INFORMATION_SCHEMA.COLUMNS,但我怀疑您是从源数据库的脚本创建的目标数据库,因此它们的列很可能是相同的。

一些比较可能会带来一些东西。

这些类型的错误有时也来自尝试将太多数据插入到 varchar 列中。

于 2008-09-09T11:04:15.520 回答
0

当我将数据从旧数据库传输到新数据库时,我遇到了类似的问题,我收到了上面的错误。然后我运行了以下脚本

SELECT * FROM [source].INFORMATION_SCHEMA.COLUMNS src INNER JOIN [dest].INFORMATION_SCHEMA.COLUMNS dst ON dst.COLUMN_NAME = src.COLUMN_NAME WHERE dst.CHARACTER_MAXIMUM_LENGTH < src.CHARACTER_MAXIMUM_LENGTH

并发现我的列在字符大小等方面略有不同。然后我尝试将表格更改为不起作用的新表格结构。然后,我将旧数据库中的数据传输到 Excel 中,并将数据从 excel 导入到 100% 工作的新数据库中。

于 2010-04-13T09:23:37.983 回答
0

还要检查脚本是否没有批处理分隔符命令(删除单行上的“GO”语句)。

于 2017-06-16T12:04:38.180 回答
0

在我的情况下,问题是设置执行 SQL 任务的变量,在映射参数名称的参数中,(在 OLEDB 中必须是您在存储过程中调用的参数的位置),我有 1,但第一个参数从 0 开始,所以我改变了它,瞧!

于 2020-01-15T11:29:32.743 回答
-1

当尝试进行插入并且字段编码不为空并且尝试插入空值时,也会发生此错误。

于 2013-07-25T20:32:21.420 回答
-1

将 csv 传输到 mssql 时出现此错误,我将列转换为 DT_NTEXT,mssql 上的某些列设置为 nvarchar(255)。

将它们设置为 nvarchar(max) 解决了它。

于 2015-11-07T00:11:07.147 回答