如何将 Access 的 Memo 型态字段汇入到 SQL2005 的 nvarchar 型态字段
时间:2008-12-26 18:13:00
问题描述:
使用 SQL 2005 w/ SP2 的汇出汇入精灵将数据从 Access 汇入到 SQL2005 发生了错误,但使用在SQL 2000的环境上却无该问题,可以正确地汇入。
中文的错误讯息如下:
- 执行前 (错误)
讯息
•错误 0xc0202009: 数据流工作: SSIS 错误码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误码: 0x80040E21。
有 OLE DB 记录可用。来源: "Microsoft SQL Native Client" Hresult: 0x80040E21 描述: "多重步骤 OLE DB 操作产生错误。请检查每个 OLE DB 状态值 (如果有的话)。未完成任何工作。"。
(SQL Server 汇入和汇出精灵)
•错误 0xc0202025: 数据流工作: 无法建立 OLE DB 存取子。请确认数据行中继数据有效。
(SQL Server 汇入和汇出精灵)
错误 0xc004701a: 数据流工作: 组件 "目的地 - Employee" (205) 未通过执行前阶段,传回错误码 0xC0202025。
(SQL Server 汇入和汇出精灵)
英文的错误讯息如下:
- Pre-execute (Error)
Messages
Error 0xc0202009: Data Flow Task: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E21.
An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80040E21 Description: "Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.".
(SQL Server Import and Export Wizard)
Error 0xc0202025: Data Flow Task: Cannot create an OLE DB accessor. Verify that the column metadata is valid.
(SQL Server Import and Export Wizard)
Error 0xc004701a: Data Flow Task: component "Destination - Employee" (205) failed the pre-execute phase and returned error code 0xC0202025.
(SQL Server Import and Export Wizard)
解决方法:
关于这个问是由于 Access 的 memo 最大容量为 65,536,其大于 SQL 2005 nvarchar 可以容纳的范围,数据检查在 SQL 2005 中较 SQL 2000 更为仔细,故在汇入作业的『执行前』阶段即被检查出数据型态不符,而出现错误讯息。
我们可以将在SQL 2005 中对应到 Access 为数据型能为 memo 的字段,将其数据型态改为 nvarchar(max),再执行汇入功能即可正常将 Access 数据汇入 SQL 2005。