2009-04-29 14 views
0

DB2からSQL2005にいくつかのデータをアップロードしています。この表には、DB2では2000文字のテキスト・フィールドが1つ含まれていますが、SQLではvarchar(2000)として設定されています。ストアドプロシージャを使用してvarcharフィールドにデータを挿入する際に問題が発生する

クエリブラウザで挿入を実行すると正常に処理され、データは正しくコピーされますが、ストアドプロシージャで同じステートメントを実行すると、このフィールドのデータのみが正しくコピーされず、一連の奇妙な文字として表示されます。

フィールドには制御文字が含まれることがありますが、フィールドに制御文字が含まれることがあります。

正しく挿入されるためには、ストアドプロシージャに適用する必要がある設定はありますか?

または、正しく表示させるには、データをキャストまたは変換する必要がありますか?

ありがとうございました。

更新:ご意見ありがとうございます。この問題は、DB2データベースを含むリンクサーバーの作成に使用したソフトウェアが原因で発生したようです。これは、ストアドプロシージャを介して実行されたときにフィールドが2000文字を処理できませんでしたが、対話的に実行された場合は可能でした。

私は最終的にフィールドを10 200文字の長さのフィールドにスプライシングしてアップロードし、SQLデータベースに入っていたときに再結合して問題を回避しました。

答えて

0

この問題は、DB2データベースにリンクサーバーを作成するために使用したサードパーティのソフトウェアによって発生しています。これは、ストアドプロシージャを介して実行されたときにフィールドが2000文字を処理できませんでしたが、対話的に実行された場合は可能でした。

私は最終的にフィールドを10 200文字の長さのフィールドにスプライシングしてアップロードし、SQLデータベースに入っていたときに再結合して問題を回避しました。

1

db2から来るデータが別の文字セットのように聞こえます。 EBCDICなどでないことを確認する必要があります。

また、SQL Server Management Studio(クエリブラウザ)からストアドプロシージャを呼び出して、まったく機能するかどうかを確認してください。

+0

しかし、クエリブラウザで実行するとデータが正しくコピーされます。それが違うキャラクターセットだったら、そこでも失敗しませんか? ストアドプロシージャは他のすべての方法で機能しますが、問題を引き起こしているのはこの1つのフィールドのデータ変換だけです。 – mfdoran

+0

@mfdoran、データはどのようにクエリブラウザに入りますか?どこからコピー/貼り付けていますか?もしそうなら、Windowsは自動的にペースト上のasciiに変換されるかもしれません。 –

+0

@KMike SQLクエリを介してDB2データベースにアクセスするので、Windows変換の問題ではありませんでした。 この問題は、DB2データベースにリンクサーバーを作成するために使用するソフトウェアが原因で発生したようです。クエリブラウザでは2000文字フィールドを処理できますが、ストアドプロシージャでは実行できませんでした。 – mfdoran

0

varchar(2000)をnvarchars(2000)に変更することもできます(ストアドプロシージャとテーブルの両方)。パラメータとして存在すると仮定します。これにより、2バイト文字を保持することができます。これはDB2の設定に依存しますが、UTF-8ではなくUTF-16(または同様のもの)をエクスポートしている可能性があります。

関連する問題