概要
新しいTeradata ODBCドライバでは、以下の機能が追加されました。
ドライバの実装の違い
新しいドライバのデフォルト モードは遅延モードです。これは、メモリにSLOBをキャッシュする必要がなければ遅延モードの方が高速であるためです。地理空間データを扱うケースなどには、SLOBの方が適しています。
- 新ドライバは、1行ごとに最大で2GBのSLOBをキャッシュします(またはキャッシュしようとします)。
- 旧ドライバがキャッシュするのは2つの応答バッファのみであり、最大サイズは32MBです。
- 1- Enable SLOB Random Access(SLOBランダム アクセスの有効化)
- 2- Max size of one SLOB(SLOBの最大サイズ)
- 3- Max size of all SLOBs in a Row(行内の全SLOBの最大サイズ)
パラメータ#1がTrueに設定されている場合、新ドライバはパラメータ#3のサイズ(最大2GB)までSLOBをキャッシュします。
軽量構文解析プログラム
新ドライバでは、TeradataのLightWeightParser(LWP)に代えて独自の構文解析メカニズムを採用しています。このLWPの実装によりメンテナンスの効率が改善され、元のLWPが抱える重大な問題が解消されました。
接続テスト
新ドライバは、接続をテストするためのメカニズムを備えています。DSNの作成時にデータ ソースの新規作成ダイアログ ボックスのテストボタンをクリックすると、ドライバがDSNを使用してデータ ストアに接続できるかどうかを確認できます。
接続文字列の構文
接続文字列内の値が中括弧({})で囲まれており、値自体のセミコロンの(;)直前に閉じ中括弧(})が含まれている場合、旧ドライバでは構文解析を行なうことができませんでした。新ドライバではこうした値を正常に解析できますが、値に含まれる閉じ中括弧は、閉じ中括弧を追加してエスケープ処理する必要があります。
例えば、接続文字列でUIDプロパティの値を{};に設定する場合、この値は次のように指定する必要があります。UID= {{}};}
Return Generated Keys(生成キーを返す)
Return Generated Keys(生成キーを返す)オプションまたはReturnGeneratedKeys接続プロパティにより、ドライバは、識別列にデータを挿入するリクエストのRowCountおよびResultSetを返すことができます。旧ドライバでは、この機能はSQLExecuteのみでサポートされていましたが、新ドライバでは、SQLExecuteとSQLExecDirectの両方でサポートされるようになりました。
ASCII文字セッション セット
旧ドライバでは、クライアント文字セットにASCIIを指定すると、拡張ASCII文字セットが指定されていました。新ドライバでは、クライアント文字セットにASCIIを指定した場合、標準の7ビットUS ASCII文字セットが指定されます。
また、新ドライバは<国際文字セット サポート、B035-1125>のマニュアルに準拠しており、7ビットASCIIの範囲外の文字(値が0x80~0xffの文字)を使用すると、言語固有のセッション文字セットが使用されます。
CHARと数値間の変換
データをCHARから数値に変換する際、CHARが標準の有効な数値表現でない場合は変換が失敗します。旧ドライバでは、「+ 789」、「 - 504.E1」、「 + .123E1 」のように、先頭および末尾のスペースに加えて符号と数値の間のスペースもサポートされていました。新ドライバでも、先頭および末尾のスペースはサポートされますが、符号と数値の間のスペースはサポートされなくなりました。
行数の結果
- Insert
- Update
- Delete
- Merge
ストアド プロシージャの作成
ストアド プロシージャを作成する場合、旧ドライバでは発生したすべての警告がレポートされていました。新ドライバでは、警告はレポートされません。
ユーザー定義関数の作成
UDF(ユーザー定義関数)のCREATEリクエストの解決時に、旧ドライバはSQL_SUCCESS_WITH_INFOを返していました。新ドライバでは、SQL_NO_DATA_FOUNDが返されます。
SQL_C_NUMERICの記述子の使用
旧ドライバでは、SQL_C_NUMERICデータの使用が必要な精度およびスケールを取得する際に記述子が使用されていませんでしたが、新ドライバではこうした情報の取得時に記述子を使用するようになりました。記述子でこれらの値が指定されていない場合、新ドライバでは精度とスケールそれぞれについて、デフォルト値の39と0を使用します。
詳細については、Microsoftサポートの方法: SQL_NUMERIC_STRUCTを使用して数値データを取得するを参照してください。