web-dev-qa-db-ja.com

SSISはSQL Serverソースデータ型を日付からWSTRに変更します

SSISデータフローでSQL Serverのテーブルを操作したいのですが。テーブルの列の1つはdateタイプです。 OLE DBソースコンポーネントを使用してSSISにインポートすると、SSISはこの列のメタデータをWSTRに変更します。

それを修正する方法について何か考えがありますか?今までになかったことだと思います。 SSISに高度なエディターでデータ型を強制的に変更できることはわかっていますが、SSISがこれがdate型の列であることを「認識」してDT_DATEに変換しないでください。

プロバイダーとしてSQLOLEDB.1を使用しています。これはSQL Server 2012であり、列のデータ型はdateです。

5
cXzY

_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