SSIS 将 SQL Server 源数据类型从日期更改为 WSTR

cXz*_*XzY 5 sql-server ssis type-conversion ssis-2012 date

我想在 SSIS 数据流中使用来自 SQL Server 的表。表的列之一是date类型。当我使用 OLE DB 源组件将其导入 SSIS 时,SSIS 将此列的元数据更改为WSTR.

你知道如何解决它吗?我认为以前从未发生过。我知道我可以强制 SSIS 在高级编辑器中更改数据类型,但是 SSIS 不应该“知道”这是date类型列并将其转换为DT_DATE?

SQLOLEDB.1用作提供者。它是 SQL Server 2012,列的数据类型只是date.

Tom*_*m V 5

您使用的SQLOLEDB.1是 SQL 2008 之前版本的驱动程序(已弃用),并且date数据类型是在 SQL 2008 中引入的。

我怀疑提供程序没有按应有的方式检测数据类型,您可能应该切换到更新的 SQL Native 客户端提供程序。

为了说明这一点,我使用 SQLNCLI11.1 和 SQLOLEDB.1 创建了一个带有 OLE DB 连接管理器的 SSIS 包。数据流都将使用查询SELECT CAST('2017-02-27' AS date) AS DateType;

查看元数据,我们看到 SQLNCLI 正确确定了日期数据类型

SQLNCLI

SQLOLEDB 无法确定日期数据类型并回退到“安全”类型的 unicode 字符串

SQLOLEDB