SSIS 无法检索列 varchar(max) 的长数据
Posted
技术标签:
【中文标题】SSIS 无法检索列 varchar(max) 的长数据【英文标题】:SSIS Failed to retrieve long data for column varchar(max) 【发布时间】:2013-06-21 20:21:35 【问题描述】:我想构建一个将 Excel 行导入 SQL Server 表的包,问题是有时会出现错误导致打包过程失败。
[Excel 源 [1]] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。一个 OLE 数据库 发生错误。错误代码:0x80040E21。 [Excel 源 [1]] 错误: 未能检索到“推荐”列的长数据。 [Excel 源代码 [1]] 错误:输出“Excel 源输出”出现错误 (9) 在组件“Excel 源”(1) 上。返回的列状态为: “DBSTATUS_UNAVAILABLE”。
如您所见,“推荐”列有问题。
注意:错误出现在 Excel 源任务中。
【问题讨论】:
问题似乎与ace驱动对列类型的解释有关。这可能会对您有所帮助:social.msdn.microsoft.com/Forums/sqlserver/en-US/… 【参考方案1】:我有同样的问题。显然,MS Jet 数据库引擎检查一列的前 8 行以尝试猜测该列的数据类型是什么(无论您指定什么类型)。
当我将注册表项 TypeGuessRows 的值从 8 更改为 0 时,我的问题已修复。 此密钥将位于以下任一位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
HKEY_LOCAL_MACHINE -> SOFTWARE -> Wow6432Node -> Microsoft -> Jet -> 4.0 ->Engines -> Excel
【讨论】:
【参考方案2】:减少DefaultBufferMaxRows
对我有帮助。
这可能是运气,但它有所帮助。
【讨论】:
【参考方案3】:对我来说,它正在创建一个新的 oledb 源。我正在为我的新查询重用现有的 oledb 源。改变它解决了我的问题
【讨论】:
【参考方案4】:我知道这是一个老问题,但我刚刚遇到了这个问题,结果发现它丢失了“C:\SSISTempStoragePath” 目录。 这样一个简单的问题,带有非常神秘的错误消息。 SSIS 将在此目录中为源中的每一列和每一行创建一个文件。当心要扫描所有这些文件的防病毒软件。 这些文件名为“DTB>此处为 GUID
【讨论】:
以上是关于SSIS 无法检索列 varchar(max) 的长数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 C# 和存储过程从 SQL Server 检索 VarChar(MAX)