ssis 脚本将 System.DateTime 转换为 DT_DBTIMESTAMP 但不会转换为 DT_DBTIMESTAMP2
ssis script converts System.DateTime to DT_DBTIMESTAMP but does not convert to DT_DBTIMESTAMP2
当我尝试通过此代码将 DateTime.Now 值传递给 DT_DBTIMESTAMP 字段时
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
Output0Buffer.AddRow();
Output0Buffer.Dt = DateTime.Now;
}
效果很好。但是当 Output0Buffer.Dt 是 DT_DBTIMESTAMP2 类型时,我收到一条消息:
"The value is too large to fit in the column data area of the buffer."
尽管 DT_DBTIMESTAMP2 应该大于 DT_DBTIMESTAMP
有没有办法正确传递值?
搜索后我找到了这篇文章:Mapping C# DateTime to SQL Server datetime2 via SSIS,我想这就是你要找的。
你也可以做一个解决方法
不要更改输出列类型,保留它 DT_DBTIMESTAMP。
并且在脚本组件之外,添加一个数据转换转换并将输出列转换为DT_DBTIMESTAMP2
比例参数默认设置为0
在我的例子中应该是 7
当我尝试通过此代码将 DateTime.Now 值传递给 DT_DBTIMESTAMP 字段时
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
Output0Buffer.AddRow();
Output0Buffer.Dt = DateTime.Now;
}
效果很好。但是当 Output0Buffer.Dt 是 DT_DBTIMESTAMP2 类型时,我收到一条消息:
"The value is too large to fit in the column data area of the buffer."
尽管 DT_DBTIMESTAMP2 应该大于 DT_DBTIMESTAMP
有没有办法正确传递值?
搜索后我找到了这篇文章:Mapping C# DateTime to SQL Server datetime2 via SSIS,我想这就是你要找的。
你也可以做一个解决方法
不要更改输出列类型,保留它 DT_DBTIMESTAMP。
并且在脚本组件之外,添加一个数据转换转换并将输出列转换为DT_DBTIMESTAMP2
比例参数默认设置为0
在我的例子中应该是 7