3

当我尝试通过此代码将 DateTime.Now 值传递给 DT_DBTIMESTAMP 字段时

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    Output0Buffer.AddRow();
    Output0Buffer.Dt = DateTime.Now;
}

它运作良好。但是当 Output0Buffer.Dt 的类型为 DT_DBTIMESTAMP2 时,我会收到一条消息:

“该值太大,无法放入缓冲区的列数据区域。”

截屏

虽然 DT_DBTIMESTAMP2 应该大于 DT_DBTIMESTAMP

有没有办法正确传递价值?

4

2 回答 2

2

scale参数默认设置为0

在我的情况下应该是 7

在此处输入图像描述

于 2017-05-03T07:16:57.637 回答
1

搜索后我发现这篇文章:Mapping C# DateTime to SQL Server datetime2 via SSIS,我想这就是你要找的。

你也可以做一个解决方法

不要更改输出列类型,将其保留为 DT_DBTIMESTAMP。

在脚本组件之外,添加一个数据转换转换并将输出列转换为 DT_DBTIMESTAMP2

于 2017-05-02T14:38:51.607 回答