如何將 Access 的 Memo 型態欄位匯入到 SQL2005 的 nvarchar 型態欄位


問題描述

使用 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。

Comments (0)

Skip to main content