4つのテキスト列を持つExcelファイルがあります。そのうちの1つは、最も長い値を持つShortDescriptionと呼ばれます。 SQL Server 2008データベースに4つの列を持つテーブルを作成し、ShortDescription列タイプをNvarChar(Max)に設定しました。
しかし、SSISインポートおよびエクスポートダイアログを使用すると、OnTruncationオプションをIgnoreに設定した場合でも、タイトルに前述のエラーが表示されます。
列データをクリアしようとしましたが、成功しました(したがって、問題がShortDescription列にあることを確認しました)。データ全体を別のExcelブックにコピーしようとしましたが、まだ運がありません。
何か案は ???
SSISダイアログでExcelソースを使用してこれをインポートしようとしていると思いますか?
その場合、問題はおそらく、SSISがExcelソースを作成するときにスプレッドシートの先頭でいくつかの行をサンプリングすることです。 [ShortDescription]列で大きすぎることに気付かない場合、255文字のテキスト列がデフォルトになります。
したがって、切り捨てなしで大量のデータを含む行を含む列からデータをインポートするには、2つのオプションがあります。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
(システムがx64の場合はHKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel
の下)レジストリキーの下のTypeGuessRowsの値を増やすことにより、サンプリングされる行数を増やすことができます。次の2つのリンクで詳細を確認できます。
さらに説明すると、SSISは、ウィザードの背後にある3つのオブジェクト、Excelデータソースオブジェクト、SQLテーブル宛先オブジェクト、およびそれらの間のデータフロー演算子を作成します。 Excelソースオブジェクトはソースデータを定義し、他の2つのオブジェクトから独立して存在します。そのため、作成時に、説明したサンプリングが行われ、ソース列のサイズが設定されます。そのため、データフロー演算子が実行され、Excelからデータを取得してテーブルに配置しようとする頃には、既に255文字に制限されているデータソースを参照しています。
フラットで区切られたファイルからSQL Serverにインポートするときにこの問題が発生しました。解決策は、問題の列の「OutputColumnWidth」値を更新することでした(エラーメッセージから)。インポートウィザードの[データソースの選択]フォームでは、ソースはフラットファイルでした。左端のペインで、「詳細」を選択します。その後、個々の列のプロパティを設定できます。私の場合、ほとんどの列の「OutputColumnWidth」はデフォルトで「50」に設定されていました。フラットファイルから値を切り捨てないように、単純に大きな値に更新しました。
動作させる簡単な方法は、インポートするファイルを編集し、最初の場所に新しい行を作成することです。そうすれば、常にサンプリングされます。次に、255文字を超える列がある場合は、セルに255文字を追加するだけで機能します。インポートしたら、追加したジャンク行を削除します。
いくつかの漢字といくつかの無効な(大きな)文字列を含む大きなファイルをインポートしようとしたときに、このエラーが発生しました。
テキストファイルはUTF8形式で保存されました。
私の設定:
一般オプション(何も変更しませんでした):
- Locale: English (United States)
- Unicode: Unchecked
- Code Page: 65001 (UTF-8)
左側に詳細オプションがあります
- DataType (for column): Unicode String [DT_WSTR] (changed)
- OutputColumnWidth: 4000 (that's the maximum) (changed)
データ型マッピングのレビューについて
- On Error: Ignore
- On Truncation: Ignore
ターゲット列の幅は50でした。
これらの設定でエラーは発生しませんでした。
私にとって、このリンクは私を助けました: https://support.Microsoft.com/en-us/kb/189897
この問題を解決するには、レジストリコンポーネントの別の場所を変更する必要があります。
で見つからない場合
スタート–> RUN–> RegEdit–> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
次に見て
スタート–> RUN–> RegEdit–> HKEY_LOCAL_MACHINE->ソフトウェア-> Wow6432Node-> Microsoft-> Jet-> 4.0-> Engines-> Excel