【问题标题】:ssis dbTimeStamp display blankssis dbTimeStamp 显示空白
【发布时间】:2026-01-23 00:20:06
【问题描述】:

我在 ssis 包中有一个日期输出列,它的长度为“0”,数据类型为“dbTimeStamp”。

 <outputColumn id="20" name="ChangeDate" description="" lineageId="20" precision="0" scale="0" length="0" dataType="dbTimeStamp" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="Conversion" errorRowDisposition="FailComponent" truncationRowDisposition="FailComponent" externalMetadataColumnId="19" mappedColumnId="0"/>

当我尝试通过 sssis 运行以下查询时,它给出了错误:

SELECT
    'No activity to report' as 'DeviceHostName'
    ,'' as [ChangeDate]
    ,'' as 'AffectedAccount'
    ,'' as [Message]
    ,'' as [OriginalValue]
    ,'' as [NewValue]
    ,'' as 'AttackerUserName'   

错误:

错误:2018-03-30 00:15:08.36 代码:0xC020901C 源:数据流任务 OLE DB 源 [1] 描述:输出列“ChangeDate”(20)在输出“OLE DB 源”时出错输出”(11)。返回的列状态为:“由于可能丢失数据,无法转换该值。”。结束错误错误:2018-03-30 00:15:08.36 代码:0xC0209029 源:数据流任务 OLE DB 源 [1] 描述:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “输出列“ChangeDate”(20)”失败,因为发生了错误代码 0xC0209072,并且“输出列“ChangeDate”(20)”上的错误行处置指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。结束错误错误:2018-03-30 00:15:08.36 代码:0xC0047038 源:数据流任务 SSIS.Pipeline 描述:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。组件“OLE DB 源”(1) 上的 PrimeOutput 方法返回错误代码 0xC0209029。当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。失败代码的含义由组件定义,但是错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。结束错误 DTExec:包执行返回 DTSER_FAILURE (1)。开始时间:上午 12:15:01 结束时间:上午 12:15:08 经过时间:7.281 秒。包执行失败。步骤失败。

我应该在查询中写什么来纠正这个问题。

【问题讨论】:

  • 那之前的错误是什么?该消息只是告诉我们任务停止的原因是由于错误(并要求您检查先前的错误消息There may be error messages posted before this with more information about the failure);你实际上并没有提供所说的错误。
  • 我已完全错误地编辑了帖子。请看一下
  • 检查 Udai 的答案。将空字符串 ('') 替换为 NULL

标签: sql sql-server ssis


【解决方案1】:

@Anurag:请你使用 NULL 作为 [ChangeDate] 代替 '' 作为 [更改日期]

您面临的问题似乎是因为 '' 或空白字符串未转换为正确的数据类型。

【讨论】:

  • 抱歉,我还没有添加 cmets 的权限。因此使用 Answer 来提供响应。
  • 最好是CONVERT(DATETIME, NULL)
  • 实际上这个结果会打印在一个文本文件上,NULL 不应该显示在那里,所以我把它留空。有什么办法可以用空白代替NULL?
  • 日期时间列中的 NULL 在写入为文本时将呈现为空。
最近更新 更多