新しいSQL Server 2008データベースをセットアップしたところ、サーバーと、一部のデータを取得するiSeries As400サーバーとの間にリンクがセットアップされました。
私が抱えている問題は、浮動小数点数を切り捨てていることです。これは、多くの時間をドルで処理しているため、苦痛です。
select * FROM openquery(NADS, 'select CMD, 1.23 Type from CREDD')
私たちの古いサーバーでは、これはCMD列と、1.23のTypeと呼ばれる列をすべて返します。新しいサーバーでは、タイプは1.00です
私の知る限り、リンク部分は同じように設定されています。 IBM i Access for Windows ODBCセットアップはほとんど同じですが、バージョン間で不明な点がいくつかあります。
編集:必要に応じて、Microsoftを使用しているプロバイダーについてOLE DB Provider for ODBC Drivers
Edit2:
プロバイダーのオプションは同じです
リンクサーバーのプロパティ:
iSeries Access for Windows ODBCセットアップは同じようです
理解した!!
どうやら、最新のService Packがインストールされていなかったようです。 64ビットバージョンのサービスパックをインストールする必要があり(32ビットバージョンはインストールに失敗しました)、終了すると10進数が出てきました。
EDIT:誰かが疑問に思っていた場合:
「IBM iAccess for Windows 7.1(07.01.0800)(64bit)」を使用しており、「Microsoft OLE DB Provider for ODBC =ドライバー」をリンクサーバーのSQLドライバーとして。
EDIT 2017:もう一度この問題に遭遇し、サービスパックを再度探す必要があったので、ここにサービスパックのダウンロードページへのリンクがあります。 、それで私がこの問題に再び遭遇する数年で、私はそれがより簡単になるでしょう...
http://www-03.ibm.com/systems/power/software/i/access/windows_sp.html
解決策は簡単です。ASSeriesに浮動小数点の値を変換させます。これは、iSeriesプロバイダーによって適用される暗黙の変換がほぼ毎回失敗するためです。したがって、非常に簡単です:
select * FROM openquery(NADS, 'select CMD, cast(1.23 as float) Type from CREDD')
このようにしてすべてが正常に機能します。1.23はSQL Serverでもフロートします。