首页 文章

Varchar(数字)导致SSIS失败

提问于
浏览
5

我正在开发一个非常简单的SSIS包:运行存储过程将数据从变量表直接导出到平面文件目的地 . 最初,变量表中的每一列都定义为 varchar(max) ,到目前为止工作正常 . 为了提高性能,我决定将约束应用于与varchar(max)不兼容的变量表,并且我必须为其分配一定的数字,例如 varchar(10) . 在此更改后,此SSIS遭遇了一系列错误:

Error: 0xC0202009 at ESP AL Extract, OLE DB Source [835]: 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.".
Error: 0xC0208265 at ESP AL Extract, OLE DB Source [835]: Failed to retrieve
long data for column "SR_RequestID".
Error: 0xC020901C at ESP AL Extract, OLE DB Source [835]: There was an error 
with output "OLE DB Source Output" (846) on component "OLE DB Source" (835).
The column status returned was: "DBSTATUS_UNAVAILABLE".
Error: 0xC0209029 at ESP AL Extract, OLE DB Source [835]: The "output
"OLE DB Source Output" (846)" failed because error code 0xC0209071 occurred,
and the error row disposition on "component "OLE DB Source" (835)" specifies 
failure on error. An error occurred on the specified object of the 
specified component.

平面文件列数据类型为 string[DT_STR] . 任何想法都表示赞赏 .

1 回答

  • 11

    试试这个 :-

    右键单击 OLEDB Source 并选择 Show Advanced Editor . 在 Input Output Properties 中展开 Oledb Source outputOutput Columns . 选择列并将数据类型更改为 String[DT_STR] ,长度为10 .

    您收到错误的原因是因为当您第一次使用数据类型 varchar (max)创建存储过程时,SSIS将列转换为 DT_TEXT . 因此,一旦列数据类型更改为 varchar(10) ,SSIS无法将 varchar 转换为 text stream . 因此失败了 .

相关问题