SSISデータフローでSQL Serverのテーブルを操作したいのですが。テーブルの列の1つはdate
タイプです。 OLE DBソースコンポーネントを使用してSSISにインポートすると、SSISはこの列のメタデータをWSTR
に変更します。
それを修正する方法について何か考えがありますか?今までになかったことだと思います。 SSISに高度なエディターでデータ型を強制的に変更できることはわかっていますが、SSISがこれがdate
型の列であることを「認識」してDT_DATE
に変換しないでください。
プロバイダーとしてSQLOLEDB.1
を使用しています。これはSQL Server 2012であり、列のデータ型はdate
です。
_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が日付データ型を正しく決定していることがわかります
SQLOLEDBは日付データ型を判別できず、「安全な」タイプのUnicode文字列にフォールバックします