Varchar(数字)导致SSIS失败

Ben*_*n S 6 varchar ssis

我正在开发一个非常简单的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.
Run Code Online (Sandbox Code Playgroud)

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

pra*_*een 13

试试这个 :-

右键点击OLEDB Source并选择Show Advanced Editor.在Input Output Properties扩大Oledb Source outputOutput Columns.选择列并更改数据类型String[DT_STR]与10的长度.

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