64

SQL Server 2008 を使用してコンピューターで dtsx パッケージを作成しました。これは、セミコロンで区切られた csv ファイルから、すべてのフィールド タイプが NVARCHAR MAX であるテーブルにデータをインポートします。

私のコンピューターでは動作しますが、クライアント サーバーで実行する必要があります。同じ csv ファイルと宛先テーブルを使用して同じパッケージを作成すると、常に上記のエラーが発生します。

パッケージの作成を段階的に行ってきましたが、すべて問題ないようです。マッピングはすべて正しいですが、最後の手順でパッケージを実行すると、このエラーが発生します。彼らは SQL Server 2005 を使用しています。

この問題をどこから探し始めればよいか、誰でもアドバイスできますか?

4

16 に答える 16

14

nvarcharある時点で、列をvarchar列に (またはその逆に)変換しようとしています。

さらに、なぜすべてが (おそらく) なのnvarchar(max)ですか? 私が見たことがあれば、それはコードの匂いです。SQL Server がこれらの列を格納する方法を知っていますか? 8kページに収まらないため、実際の行から列が格納されている場所へのポインターを使用します。

于 2009-08-19T12:28:16.513 に答える
8

2 つの解決策: 1- ターゲット列の型が [nvarchar] の場合、[varchar] に変更する必要があります。

2-「派生列」コンポーネントを SSIS パッケージに追加し、次の式で新しい列を追加します:
(DT_WSTR, «length») [ColumnName]

Length はターゲット テーブルの列の長さで、ColumnName はターゲット テーブルの列の名前です。最後に、マッピング部分で、元の列の代わりにこの新しく追加された列を使用する必要があります。

于 2013-06-11T14:46:34.423 に答える
8

非 Unicode 文字列データ型:
テキスト ファイルには STR を使用し、SQL Server 列には VARCHAR を使用します。

Unicode 文字列データ型:
テキスト ファイルには W_STR を使用し、SQL Server 列には NVARCHAR を使用します。

問題は、データ型が一致しないため、変換中にデータが失われる可能性があることです。

于 2009-10-20T19:45:36.577 に答える
5

これは、IDE を使用して修正するソリューションです。

  1. 以下に示すように、アイテムをデータフローに追加しData Conversionます。

ここに画像の説明を入力

  1. Data Conversionアイテムをダブルクリックして、次のように設定します。

ここに画像の説明を入力

  1. DB Destination次に、アイテムをダブルクリックし、をクリックして、入力列が [列名] のコピーからのものと実際に同じであるMappingことを確認します。これは、実際には出力ではなく出力です (ここで注意してください)。スクリーンショットは次のとおりです。Data ConversionDB Source

ここに画像の説明を入力

それだけです..保存して実行します..

于 2015-11-09T17:54:13.980 に答える
4

マイク、私は SQL Server 2005 の SSIS で同じ問題を抱えていました。そのオブジェクト、詳細エディター、コンポーネント プロパティ ペインに移動し、「ValidateExternalMetaData」プロパティを False に変更します。ここで、[入力および出力のプロパティ] ペイン、[宛先入力]、[外部列] に移動します。各列の [データ型] と [長さ] を、移動先のデータベース テーブルと一致するように設定します。これで、そのエディターを閉じると、これらの列の変更が保存され、検証されずに機能します。

于 2010-08-24T17:07:52.190 に答える
4

以下の手順に従って、このエラーを回避します (Unicode と非 Unicode の文字列データ型の間で変換できません)。

i) データ変換変換ツールを DataFlow に追加します。
ii) DataFlow 変換を開き、[文字列 DT_STR] データ型を選択します。
iii) 次に、[宛先フロー] に移動し、[マッピング] を選択します。
iv) i/p 名を名前のコピーに変更します。

于 2011-09-09T05:12:55.643 に答える
1

解決済み - 元の質問に:

これは前に見たことがあります。最も簡単な修正方法 (すべてのメタデータがソース接続から利用できるため、これらすべてのデータ変換手順は必要ありません):

OLE DB ソースと OLE DB 宛先を削除します 遅延検証が FALSE であることを確認します (後で True に設定できます) クエリなどを使用して OLE DB ソースを再作成します 詳細エディターで、すべての出力データ列の型が正しいことを確認しますOLE DB 宛先を再作成し、マップし、新しいテーブルを作成 (または既存のテーブルに再マップ) すると、SSIS がすべてのデータ型を正しく取得したことがわかります (ソースと同じ)。

上記のものよりはるかに簡単です。

于 2015-02-05T17:07:35.020 に答える
1

これがまだ問題かどうかはわかりませんが、次の簡単な解決策を見つけました。

  1. Ole DB ソースを右クリック
  2. 「編集」を選択
  3. [入力および出力プロパティ] タブを選択します
  4. [入力と出力] の下で、[Ole DB ソース出力] 外部列と出力列を展開します。
  5. [出力列] で、問題のあるフィールドを選択し、右側のパネルで、[データ型プロパティ] が [外部列] プロパティのフィールドのものと一致していることを確認します

これが明確で理解しやすいことを願っています

于 2015-03-03T11:09:24.017 に答える
1

50 個以上の列がある場合、dts データ変換タスクには時間がかかります。以下のリンクでこれに対する修正を見つけました。

http://rdc.codeplex.com/releases/view/48420

ただし、2008年以降のバージョンでは機能しないようです。したがって、これが問題を回避する方法でした

*Open the .DTSX file on Notepad++. Choose language as XML
*Goto the <DTS:FlatFileColumns> tag. Select all items within this tag
*Find the string **DTS:DataType="129"**  replace with **DTS:DataType="130"**
*Save the .DTSX file. 
*Open the project again on Visual Studio BIDS
*Double Click on the Source Task . You would get the message

the metadata of the following output columns does not match the metadata of the external columns with which the output columns are associated:
...
Do you want to replace the metadata of the output columns with the metadata of the external columns?

 *Now Click Yes. We are done !
于 2014-02-05T13:53:32.610 に答える
1

レジストリにアクセスしてクライアントを構成し、LANG を変更します。Oracle の場合、HLM\SOFTWARE\ORACLE\KEY_ORACLIENT...HOME\NLS_LANG に移動し、適切な言語に変更します。

于 2012-07-22T10:20:27.440 に答える
0

ソースクエリ/ビュー/プロシージャのフィールドとして静的文字を選択し、Unicode の宛先フィールドのデータ型を選択すると、このエラーが発生することがあります。

以下は私が直面した問題です: ソースで以下のスクリプトを使用しました

Column "CATEGORY" cannot convert between Unicode and non-Unicode string data types.以下 のようなエラーメッセージが表示されました:エラーメッセージ

解決策: 複数のオプションを試しましたが、どれもうまくいきませんでした。次に、静的値の前に N を付けて、以下のように Unicode で作成します。

SELECT N'STUDENT DETAIL' CATEGORY, NAME, DATEOFBIRTH FROM STUDENTS
UNION
SELECT N'FACULTY DETAIL' CATEGORY, NAME, DATEOFBIRTH FROM FACULTY
于 2016-04-21T10:49:54.907 に答える
-1
1.add a Data Conversion tool from toolbox
2.Open it,It shows all coloumns from excel ,convert it to desire output. take note of the Output Alias of
each applicable column (they are named Copy Of [original column name] by default)
3.now, in the Destination step, click on Mappings
于 2014-07-14T13:31:28.030 に答える