2012-07-31 5 views
19

SSISは比較的新しいです。私は、Oracle用のMicrosoft OLEDBを使用してOracleデータベースから情報を抽出しようとしていると私は、このクエリを使用しています:SSIS - データの損失の可能性があるため、値を変換できません。

SELECT ID FROM Test 

私はというエラーメッセージが表示されます:the value cannot be converted because of a potential loss of dataを。私は次のようにクエリを変更した場合、それは動作します:

SELECT '1' FROM Test 

私はIDが整数ではないので、それが失敗していると思います。しかし、フラットファイル接続マネージャは、OutputColumnWidthが50であることを示しています。何が間違っていますか?

アップデート午前16時30分GMT
私はこのもう少しに見ていると、「周波数」や問題を引き起こしている「なし」のヒストグラムを持つ列であるように思われます。ヒストグラムが「バランスのとれた高さ」のものはOKと思われます。

+0

'Test'テーブルの' ID'のデータ型は? – billinkc

+0

@ billinkc、それは次のように見えます:String [DT_STR] – w0051977

+0

@billinkc、私は質問を編集しました。見てください。 – w0051977

答えて

31

これは一般的なことです。カラムのメタデータが決まらない別のタイプのシステムからのssisへのインポートの多くのデフォルトでは、デフォルトはstr(50)です。これを1文字の列にプッシュしようとしているので、データが失われる可能性があると想定しています。単に右クリックして、ソースコンポーネントに移動して、選択する「ショー高度なエディタを...」

を次に最後のタブ(入力と出力のプロパティ)に移動し

OLE DBソース出力

に+ [次へ]をクリックします

スクロールダイアログボックスの右側の長さのデータ型プロパティに出力列に

ハイライトID列を+、[次へ]をクリックし、1

に50からそれを変更します
+1

この+1ありがとうございます。解決策は、あなたが言ったこと、すなわち1から50に変更することと全く反対のことでした(正しい方向に私を指摘した)。私はそれが整数型だと思ったので、あなたは50対1の変更を言ったと思いますか?実際にはString型でした。出力列の一部に間違ったデータ型があることに気付きました。 Stringの4バイト符号付き整数私があなたの答えを受け入れる前に、なぜこれが起こったのか説明できますか? – w0051977

+0

「1」のために働いたと言われたので私はそれが1であると仮定しました。インポートしたデータをより小さな宛先フィールドに移動する次のステップでエラーが最初に発生していると思いました。ここでの説明は、実際のインポートで間違っているメタデータを示しています。 Oracle DBと同じレベルのOracle用ドライバを使用していますか?また、AlwaysUseDefaultCodePageフラグの状態は何ですか(私の答えはここにあります:http://stackoverflow.com/a/8697899/236348)? –

+1

ありがとうございます。質問を書く前に、私はすでにあなたのリンクごとにAlwaysUseDefaultCodePageフラグを設定していました。 「メタデータが間違っている」と「同じレベルにある」とはどういう意味ですか? – w0051977

関連する問題