我正在开发一个非常简单的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 回答
试试这个 :-
右键单击
OLEDB Source
并选择Show Advanced Editor
. 在Input Output Properties
中展开Oledb Source output
和Output Columns
. 选择列并将数据类型更改为String[DT_STR]
,长度为10 .您收到错误的原因是因为当您第一次使用数据类型
varchar
(max)创建存储过程时,SSIS将列转换为DT_TEXT
. 因此,一旦列数据类型更改为varchar(10)
,SSIS无法将varchar
转换为text stream
. 因此失败了 .