1

Oracle11gR2ゲートウェイを介してSQLServer2005に接続しようとしていますが、SQL Serverからデータを取得するビューをクエリすると、次のエラーが発生します。

Error: ORA-28500:[Oracle][ODBC SQL Server Driver]String data, right truncation 

Oracleで実行されているクエリのいくつかの列をコメントアウトしましたが、機能しました。コメントされた列はVARHCAR(30)のデータ型ですが、VARCHAR(30)である他のフィールドもあります。

このエラーの回避策はありますか?クエリ全体に失敗するこれらの3つの列を追加すると、すべてがOKになります。データソースであるSQL Server 2005で実行されているビューでこれらのフィールドの名前を変更しようとしましたが、結果はありません。

ODBCドライバーとSQLServerドライバーの両方がインストールされており、SQLServerドライバー「dg4msql」を使用しています。Oracle文字セットはAL32UTF8です。

4

1 に答える 1

0

これの最も可能性の高い原因は、これらの列に、Oracleが格納するために複数のバイトを使用する文字が含まれていることです。ゲートウェイは、列がSQL ServerでVARCHAR(30)として定義されていることを認識し、OracleでVARCHAR2(30)列を作成しますが、ここでは(30)は30文字ではなく30バイトであるため、次の場合にデータの切り捨てを取得できます。 Oracleが使用したい合計バイト数は30を超えています(つまり、SQL Serverには30文字がありますが、そのうちの1つはOracleで2バイトを必要とするため、長さが31になり、長すぎます)。

回避策として、SQL ServerのVARCHAR(30)列をNVARCHAR(30)に変更します。ゲートウェイは、マルチバイト文字を取得し、列定義をNVARCHARとして変換し、挿入を許可する可能性があることを認識します。

列がどのように変換されるかについての詳細は、11gR2のゲートウェイデータ型変換表を参照してください。

于 2011-04-07T10:10:43.203 に答える